Study

[JAVA/자바] 연산자 (Operator) 종류와 우선 순위

_유니 2022. 10. 21. 16:03

연산자 종류와 우선순위

 

 

# 단항 연산자 ( 하나의 값을 가지고 연산)

 

- 논리 부정 연산자 : !

논리 값 (true / false)을 부정하여 반대 값으로 변경

제어문을 활용할 때 많이 쓰임

* 결과마저도 논리 값

 

> 예시

boolean bool1 = true;

boolean bool2 = !bool1;

System.out.println(bool2);

 

 

- 증감 연산자 : ++ --

피연산자의 값에 1을 더하거나 빼는 연산자

위치에 따라 출력 값이 다르게 나타남

 

전위 연산 : 먼저 연산 후 다른 연산 실행 ("선증감"후처리)

 

> 예시

int a = 10;

int b = ++a;

System.out.println(a + "," + b);

 

후위 연산 : 다른 연산 우선 실행 후 연산 (선처리"후증감")

 

> 예시

int a = 10;

int b = a++

System.out.println(a + "," + b);

 

 

# 이항 연산자

 

- 산술 연산자

연산 방법과 우선순위가 일반 수학과 동일

 

+ : 더하기

- : 빼기

 

> 예시

int a = 10, b = 20, c = 0;

c = a + b;

c = a - b;

 

* : 곱하기

/ : 나누기의 몫

% : 나누기의 나머지

 

> 예시

int a = 10, b = 20, c = 0;

c = a * b;

c = a / b;

c = a % b;

 

 

- 비교 연산자 (관계 연산자) : == != (동등 비교 연산자)

데이터가 같은지, 다른지 비교할 때 쓰이며,

조건을 만족하면 true(참), 만족하지 않으면 false(거짓)을 반환

즉, 비교 결과 값으로 항상 논리 값(true, false)이 나옴

피연산자로 모든 자료형(기본형, 참조형) 사용 가능

 

a == b : a와 b가 같으면 true

a != b : a와 b가 다르면 true

 

> == 예시

if(a == b) {}

int result = a == b ? a++ : b--;

 

> != 예시

if(a != b) {}

int result = a != b ? a++ : b--;

 

- 비교 연산자 (관계 연산자) : > >= <= < (대소 비교 연산자)

두 피연산자의 값의 크기 비교

기본형 boolean, 참조형을 제외하고 나머지 자료형에 모두 사용 가능

 

> 예시

if(a < b) {}

int result = a > b ? a++ : b--;

for(int a = 0; a <= b; a++) {}

while(a >= b) {}

 

** 값 % 2 == 0 라는건 2로 나눴을 때의 나머지가 0일 경우 == 2로 나눠 떨어진다는 의미 == 짝수
    값 % 2 == 1 라는건 2로 나눴을 때의 나머지가 1일 경우 == 2로 나눠 떨어지지 않는다는 의미 == 홀수

 

 

- 논리 연산자

논리 값 두 개를 비교하는 연산자

논리 연산한 결과마저도 논리 값

 

&& : 두 피연산자가 모두 true일 때 true 반환

(AND = ~이고, 그리고, ~하면서)

 

|| : 두 피연산자 중 하나만 true여도 true 반환

(OR = ~이거나, 또는)

 

a b a && b a || b
true true true
b값 추정 가능
true
b값 추정 불가능
true false false
b값 추정 가능
true
b값 추정 불가능
false true false
b값 추정 불가능
true
b값 추정 가능
false false false
b값 추정 불가능
false
b값 추정 가능

** && 연사자를 기준으로 앞의 결과가 false일 경우 뒤의 조건은 실행하지 않는다 (무시함)

    || 연자를 기준으로 앞의 결과가 true일 경우 뒤의 조건은 실행하지 않는다 (무시함)

 

 

 

- 복합 대입 연산자 :  += -= *= /= %=

다른 연산자와 대입 연산자가 결합한 것으로

자기 자신과 연산 후 연산 결과를 자기 자신에게 누적 대입

(산술 연산 먼저 쓰고 대입 연산 나중)

 

 a = a + 3;  =>  a += 3;

 a = a - 3;  =>  a -= 3;
 a = a * 3;  =>  a *= 3;
 a = a / 3;  =>  a /= 3;
 a = a % 3;  =>  a %= 3;

 

* 증감 연산과 비슷해 보이지만 증감 연산자(++, --)는 1씩 증가

  대입 연산자는 원하는 값을 증가시키고 그 변수에 저장 가능

 

 

- 삼항 연산자

조건식의 결과 값에 따라 연산을 처리하는 방식

결과 값이 참일 경우 식1, 거짓일 경우 식2 수행

삼항 연산자 안에 삼항 연산자를 중첩하여 쓰는 것도 가능

 

[표현법] 조건식 ? 식1(조건식이 참일 경우 돌려줄 결과 값) : 식2(조건식이 거짓일 경우 돌려줄 결과 값);

* 조건식은 반드시 true false가 나오도록 작성

* 주로 비교, 논리 연산자를 통해 작성

 

> 예시

int result1 = a > b ? a++ : b--;

int result2 = a < b ? a++ : (b == 0 ? a-- ; b++);