[JAVA/자바] 연산자 (Operator) 종류와 우선 순위
연산자 종류와 우선순위
# 단항 연산자 ( 하나의 값을 가지고 연산)
- 논리 부정 연산자 : !
논리 값 (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++);