연산자의 종류
종류 | 연산자 | 연산 우선 순위 |
증감 | ++, -- | 1 |
산술 | +, -, *, /, % | 2 |
시프트 | >>, <<, >>> | 3 |
비교 | >, <. >=, <=, ==, != | 4 |
비트 | &, |, ^, ~ | 5 ( '~'는 1순위 ) |
논리 | &&, ||, ! | 6 ( '!'는 1순위 ) |
조건(삼항) | ?, : | 7 |
대입 | =, *=, /=, %=, +=, -= | 8 |
증감 연산자
x ++ | 연산을 먼저 수행한 뒤, 피연산자 값 1 증가 |
++ x | 피연산자 값을 1 증가한 뒤, 연산을 수행 |
x -- | 연산을 먼저 수행한 뒤, 피연산자 값 1 감소 |
-- x | 피연산자 값을 1 감소한 뒤, 연산을 수행 |
산술 연산자
+ | 두 수의 덧셈 |
- | 두 수의 뺼셈 |
* | 두 수의 곱셈 |
/ | 두 수의 나눗셈 |
% | 두 수를 나눈 나머지 |
시프트 연산자
x >> n | 정수 x를 32비트로 분해하여, 오른쪽으로 n비트 만큼 이동 ( 빈 자리가 양수면 0, 음수면 1로 채워짐 ) |
x >>> n | 정수 x를 32비트로 분해하여, 오른쪽으로 n비트 만큼 이동 ( 빈 자리가 0으로 채워짐 ) |
x << n | 정수 x를 32비트로 분해하여, 왼쪽으로 n비트 만큼 이동 ( 빈 자리가 0으로 채워짐 ) |
비교 연산자
> | 좌항이 더 크면 true를 반환 |
< | 우항이 더 크면 true를 반환 |
>= | 좌항이 더 크거나 같으면 true를 반환 |
<= | 우항이 더 크거나 같으면 true를 반환 |
== | 두 항이 같으면 true를 반환 |
!= | 두 항이 같지 않으면 true를 반환 |
논리 연산자
& | 각 항이 모두 참일 때만, true를 반환 |
| | 각 항중 하나라도 참이면, true를 반환 |
! | 참이면 false, 거짓이면 true로 반환 |
&& | 각 항이 모두 참일때만 true를 반환하나, false가 나오면 후순위의 연산은 실행 X |
|| | 우선순위가 높은 연산부터 실행하여 참의 결과가 나오면, 후순위의 연산은 실행하지 않고 true를 반환 |
대입 연산자
= | 좌항의 변수에 우항의 값을 대입 |
+ = | 좌항의 변수에 우항의 값을 더하여 대입 |
- = | 좌항의 변수에 우항의 값을 빼서 대입 |
* = | 좌항의 변수에 우항의 값을 곱하여 대입 |
/ = | 좌항의 변수에 우항의 값을 나누어 대입 |
% = | 좌항의 변수에 우항의 값을 나눈 나머지를 대입 |
비트 연산자
& | 피연산자를 2진수의 비트로 연산하여, 두 값이 모두 1일떄만 결과도 1을 반환 |
| | 피연산자를 2진수의 비트로 연산하여, 두 값중 하나만 1이여도 결과로 1을 반환 |
^ | 피연산자를 2진수의 비트로 연산하여, 두 값이 다를 때만 결과로 1을 반환 |
~ | 피연산자를 2진수의 비트로 변환하여, 반전된 값을 결과로 반환 |
조건 연산자
조건 A ? A가 참일 때 반환 값 : A가 false일 때 반환 값 으로 나타냄
→ 변수 age의 값은 28 → age > 20 이라는 조건에서 참이 성립 → "성인"이라는 문자열 반환int age = 28; System.out.println(age > 20 ? "성인" : "미성년자");