본글은 'Do it 자바 완전 정복' 책을 통한 공부내용을 정리한 글입니다.
연산자의 종류
자바의 연산자는 연산 결과의 특징에 따라 3가지로 나눌 수 있다.
자료형 | 연산 기호 | 기능 | 결과 |
산술 연산자 | +, -, *, /, % | 사칙연산 및 나머지 연산 | 값 |
증감 연산자 | ++, -- | 값이 1씩 증가 및 감소 | |
비트 연산자 | &, |, ~, ^ | 비트 AND, OR, NOT, XOR | |
시프트 연산자 | >>, <<, >>> | 비트 단위의 이동 | |
비교 연산자 | <, >, <=, >=, ==, != | 값의 크기 비교 | 참 또는 거짓 |
논리 연산자 | &&, ||, !, ^ | 논리 AND, OR, NOT, XOR | |
대입 연산자 | =, +=, -=, *=, /=, &=, |=, >>=, <<=, >>>= | 산술 연산 결과의 대입 | 실행 |
삼항 연산자 | (참 또는 거짓) ? X : Y | 참일 때 X, 거짓일 때 Y |
산술 연산자
가장 기본적인 연산자. 사칙연산과 나머지 연산이 있다. 정수/정수 형태의 나누기 시 주의해야 한다.
int a = 5;
int b = 2;
System.out.print(a/b); // 2
// => 즉 나눗셈의 몫
이와 달리 나머지 연산은 말 그대로 나누기를 수행한 이후의 나머지를 나타낸다. 모듈로 연산이라고도 한다.
증감 연산자 (++, --)
증감 연산자는 코드의 간결함을 위해 생긴 연산자로 값을 1씩 증가 또는 감소 시킨다.
변수 앞에 붙는 전위형과 후위형으로 나뉘고 이 둘은 실행의 우선순위에 차이가 있다.
int a1 = 3;
int b1 = ++a; // 전위형 : 증감후 사용
System.out.println(a1); // 4
System.out.println(b1); // 4
int a2 = 3;
int b2 = a++; // 후위형 : 사용후 증감
System.out.println(a2); // 4
System.out.println(b2); // 3
비트 연산자
비트 단위의 연산자로 AND(&), OR(|), XOR(^), NOT(~)가 있다.
값1 | 값2 | AND(&) | OR(|) | XOR(^) |
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
비트 NOT연산자를 사용시에는 값의 첫 번째 비트는 부호비트인것을 명심하자(0: 양수, 1:음수)
시프트 연산자
비트의 위치를 좌우로 이동하는 연산으로 산술 시프트와 논리 시프트가 있다
산술 시프트 : 숫자의 부호 비트는 유지하며 나머지 비트를 왼쪽(<<) 또는 오른쪽(>>)으로 이동하는 연산자
<< 연산 수행시 1bit 이동 할때마다 x2의 효과를 가진다.
>> 연산 수행시 1bit 이동 할때마다 /2의 효과를 가진다.
연산자 | 부호 | 특성 | 예 |
<< | 양수, 음수 | 1bit 시프트당 x2 부호유지 |
3 << 1 = 6, -3 << 1 = -6 |
>> | 양수 | 1bit 시프트당 / 2, 소수 버림 | 5 >> 2 = 1 |
음수 | 1bit 시프트당 / 2, 소수 올림 | -5 >> 2 = -2 |
논리 시프트 : 부호 비트를 포함해 전체 비트를 오른쪽으로 이동
해당하는 숫자만큼 우측의 비트는 삭제, 빈칸은 부호 비트와 관계없이 0으로 채운다.
비교 연산자
비교 연산자의 결과는 true와 false 중 하나를 나타낸다.
논리 연산자
피연산자로 불리언값만 올릴 수 있다. 연산 결과 또한 불리언 타입만을 지닌다.
논리 연산자 vs 비트 연산자
둘의 차이는 바로 쇼트 서킷의 적용 여부다. 쇼크 서킷이란 연산을 수행하는 과정에서 결과가 확정됐을 때 나머지 연산 과정을 생략하는 것을 말한다. 논리 연산자로 논리 연산 수행시 쇼트 서킷이 적용된다.
대입 연산자
오른쪽 피연산자의 연산 결과를 왼쪽 변수에 대입하는 연산자. 대입 연산자는 다른 연산자와 결합해 축약된 상태로 사용될 수 있다. 축약표현은 아래의 표를 보자
일반 표현 | 축약 표현 |
a = a+b | a += b |
a = a-b | a -= b |
a = a*b | a *= b |
a = a/b | a /= b |
a = a & b | a &= b |
a = a | b | a |= b |
a = a >> b | a >>= b |
a = a << b | a <<= b |
a = a >>> b | a >>>= b |
축약 표현은 단순히 수식만 간략화한 것이므로 실행 결과에는 아무런 영향을 미치지 않는다.
삼항 연산자
자바의 연산자 중 유일하게 3개의 피연산자가 있는 연산자. 삼항 연산자는 if문으로도 변환할 수 있다.
(참 또는 거짓) ? 참일 때 연산 결과 : 거짓일 때 연산 결과
int a = (true) ? 1 : 2; // 앞에 true가 왔으므로 a = 1
int b = (a % 2 == 0) ? 10 : 20; // 앞에 false가 왔으므로 b = 20
'Backend > JAVA' 카테고리의 다른 글
[Java] #5.2 참조자료형 - 문자열 (0) | 2023.05.21 |
---|---|
[Java] #5.1 참조 자료형 - 배열 (0) | 2023.05.16 |
[Java] #4 제어문과 제어 키워드 (1) | 2023.05.15 |
[JAVA] 변수와 자료형 (0) | 2023.04.29 |
[JAVA] 프로그래밍 언어와 자바 (0) | 2023.04.18 |