[Java] 연산자
자바의 연산자는 연산 결과의 특징에 따라 3가지로 나눌 수 있다.
1. 연산 결과가 특정 값이 나오는 산술, 증감, 비트, 시프트 연산자
2. 연산 결과가 참 또는 거짓 중 하나의 값으로만 나타나는 비교, 논리, 연산자
3. 값을 반환하는 것이 아닌 값을 대입하는 의미를 지니고 있는 대입 연산자와 삼항 연산자
자료형 | 연산기호 | 기능 | 결과 |
산술 연산자 증감 연산자 비트 연산자 시프트 연산자 |
+, -, *, /, % ++, -- &, |, ~, ^ >>>, >>, << |
사칙연산 및 나머지 연산 값이 1씩 증가 및 감소 비트 AND, OR, NOT, XOR 비트 단위로 이동 |
값 |
비교 연산자 논리 연산자 |
<, >, <=, >=, ==, != &&, ||, !, ^ |
값의 크기 비교 논리 AND, OR, NOT, XOR |
참 또는 거짓 |
대입 연산자 삼항 연산자 |
=, +=, -=, *=, /= &=, |=, >>=, <<=, >>>= (참 또는 거짓) ? x : y |
산술 연산 결과의 대입 ('연산자' + '='의 축약 표현) 참일 때 x, 거짓일 때 y |
실행 |
-> 보통 대입 연산자가 있어야지 변수의 값이 바뀜. 예외) ++a, a++, --a, a--
증감 연산자
* 전위형
int a1 = 3;
int b1 = ++a;
// a1: 4, b1: 4
* 후위형
int a2 = 3;
int b2 = a2++;
// a2: 4, b2: 3
시프트 연산자
연산자 | 부호 | 특성 | 예 |
<< | 양수 음수 |
1 bit 시프트당 x2, 부호유지 | 3 << 1 = 6 -3 << 1 = -6 |
>> | 양수 음수 |
1 bit 시프트당 / 2, 부호유지, 소수 버림 1 bit 시프트당 /2, 부호유지, 소수 올림 |
5 >> 2 = 1 -5 >> 2 = -2 |
논리 시프트 ( >>>)
· 부호 비트를 포함해서 전체 비트를 오른쪽으로 이동시키는 연산으로 빈칸은 모두 0으로 채움
· 부호 비트까지 이동시키므로 부호 비트가 1인 음수일 때 논리 시프트 이후에는 값이 양수로 변함
등가 비교 비교대상
· 등가비교( ==, != )의 비교대상은 스택 메모리의 값
삼항 연산자
· ( 참 또는 거짓 ) ? 참일 때 연산결과 : 거짓일 때 연산결과
int a = (true) ? 1 : 2; // a: 1
int b = (a / 2 == 0) ? 10 : 20; // b: 20
stack, heap
stack | heap
reference variable | 객체
* reference type(참조 자료형): Array, Class, Interface -> new로 객체 생성(static만 new x)