Tiny Finger Point Hand With Heart
본문 바로가기
JAVA

[JAVA] 연산자 (증감/부호/산술/논리/비교/대입/비트)

by yoondii 2023. 2. 26.
728x90
반응형

1. 산술 연산자

+, -, *, /, %로 더하기, 빼기, 곱하기, 나누기, 나머지 몫 연산자로 나눠진다.

우리가 아는 사칙연산을 생각하면 된다.

  • +: 더하기
  • -: 빼기
  • *: 곱하기
  • /: 나누기
  • %: 나눈 후 나머지 몫
int num = 15;
System.out.println(num + 2); // 17
System.out.println(num - 2); // 3
System.out.println(num * 2); // 30
System.out.println(num / 2); // 7.5
System.out.println(num % 4); // 15/4 의 나머지는 3
 

2. 증감 연산자

++: 항에 1을 더한다.

--: 항에 1을 뺀다.

 

증가/감소 연산자 위치에 따라 다른 의미를 가지니 헷갈리지말고 사용해야함.

 
//앞에 있는 경우 먼저 계산을 하고 System.out.println()을 수행한다.
int num = 3;
System.out.println(++num); // 4
//계산하고 수행
num = num + 1;
Sysetm.out.println(num);


//뒤에 있는 경우 System.out.println()을 수행하고, 계산한다.
num = 3;
System.out.println(num++); // 3
// 수행하고 계산.
Sysetm.out.println(num);
num = num + 1;

 

3. 단항 연산자

항이 1개인 연산자를 뜻함

++i

 

4. 이항 연산자

항이 2개인 연산자를 뜻함

num1 + num2

 

5. 조건 연산자

 

  • 삼항 연산자
  • 조건식의 결과가 true(참)인 경우와 false(거짓)인 경우에 따라 다른 결과가 수행됨
  • if (조건문)을 간단히 표현할 때 사용 할 수 있음
  • 조건식?결과1:결과2  => 조건식이 참이면 결과1, 조건식이 거짓이면 결과2

 

 
int x = 3
int y = 5

x>y ? x: y //5

 

6. 부호 연산자

부호를 변경해주는 연산자 (+ 또는 -)

int num = 1;
int num2 = -2;
int num3 = -num2;

System.out.println(num); //1
System.out.println(num2); //-2
System.out.println(num3); //2
 

7. 대입 연산자

우선 순위가 가장 낮은 연산자로 왼쪽 변수에 오른쪽 값을 대입하는 연산자

double dNum = 1.2;

 

7.1. 복합 대입 연산자

'산술 연산자'와 같이 사용하여 아래와 같이 표현이 가능하다.

int num = 15;
num += 3; // num = num + 3; 와 동일
num -= 4; // num = num - 4; 와 동일
num *= 2; // num = num * 2; 와 동일
num /= 3; // num = num / 3; 와 동일
num %= 3; // num = num % 3; 와 동일

 

8. 관계 연산자

수학에서 사용하는 >, <, >=, <=와 같다.

  • > : 왼쪽항이 크다
  • < : 왼쪽항이 작다
  • >= : 왼쪽항이 크거나 같다.
  • <= : 왼쪽항이 작거나 같다.
int num1 = 5;
int num2 = 3;

boolean value = (num1 > num2);
System.out.println(value); // ture

System.out.println(num1 < num2); // false
System.out.println(num1 >= num2); // true
System.out.println(num1 <= num2); // false
System.out.println(num1 == num2); //false
System.out.println(num1 != num2); //true

 

9. 논리 연산자

논리 연산자는 &&, ||, ! 로 나눠진다.

  • &&;: and 조건으로, 2개의 값이 모두 true일 때 만 true이다. 나머지는 false
  • ||: or 조건으로, 1개의 값만 true이면 모두 true다. 나머지는 false
  • !: not 조건으로, true를 false로, false를 true로 바꿔준다.
int num1 = 10;
int num2 = 20;

boolean flag = (num1 > 0) && (num2 > 0);
System.out.println(flag); //true

flag = (num1 < 0) && (num2 > 0);
System.out.println(flag); //false

flag = (num1 > 0) || (num2 > 0);
System.out.println(flag); //true

flag = (num1 < 0) || (num2 > 0);
System.out.println(flag); //true

flag = !(num1 > 0);
System.out.println(flag); //false

 

9.1. 논리 연산에서 모든 항이 실행되지 않는 경우 - 단락 회로 평가 (short circuit evaluation)

 

  • 논리 곱(&&)은 두 항의 결과가 모두 true일 때만 결과가 true
    • -- 앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음
  • 논리 합(||)은 두 항의 결과가 모두 false일 때만 결과가 false
    • -- 앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음
int num1 = 10;
int i = 2;

boolean value = ((num1 = num1 + 10 ) < 10) && ( ( i = i + 2 ) < 10);
System.out.println(value); //false
System.out.println(num1); //20
System.out.println(i); //2

value = ((num1 = num1 + 10 ) < 10) || ( ( i = i + 2 ) < 10);
System.out.println(value); //true
System.out.println(num1); //30
System.out.println(i); //4

 

 

10. 비트 연산자

  • 대입연산자와 다른 연산자가 함께 쓰임
  • 마스크 : 특정 비트를 가리고 몇 개의 비트 값만 사용할 때
  • 비트켜기 : 특정 비트들만을 1로 설정해서 사용하고 싶을 때
    예) & 00001111 ( 하위 4비트 중 1인 비트만 꺼내기)
  • 비트끄기 : 특정 비트들만을 0으로 설정해서 사용하고 싶을 때
    예) | 11110000 ( 하위 4비트 중 0 인 비트만 0으로 만들기)
  • 비트 토글 : 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때
x << y 정수 x의 각 비트를 y만큼 왼쪽으로 이동시킵니다. (빈자리는 0으로 채워집니다.)
x >> y 정수 x의 각 비트를 y만큼 오른쪽으로 이동시킵니다. (빈자리는 정수 a의 최상위 부호비트와 같은 값으로 채워집니다.  
x >>> y 정수 x의 각 비트를 y만큼 오른쪽으로 이동시킵니다. (빈자리는 0으로 채워집니다.)
System.out.println(2<<3); //16
System.out.println(16>>3); //2
System.out.println(-16>>3); //-2
System.out.println(-16>>>3); //536870910

 

& AND 두 비트 모두 1일 경우에만 연산 결과가 1
| OR 두 비트 중 하나만 1일 경우에만 연산결과가 1
^ XOR 두 비트중 하나는 1이고 다른 하나가 0일경우에만 연산결과가 1
~ NOT 비트 반전(보수)
System.out.println(15 & 25); //9
System.out.println(15 | 25); //31
System.out.println(15 ^ 25); //22
System.out.println(~25); //-26
728x90
반응형

댓글