Jun's Development Journey
[Java/문법] 연산자 본문
1. 오버플로우 탐지
- 연산 후의 산출값이 산출 타입으로 표현이 가능한지 살펴봐야 한다.
- 산출 타입으로 표현 불가 시 쓰레기값을 얻을 수 있기 때문이다.
- 아래 예시에서 올바른 값을 얻기 위해선 x, y 중 최소 하나라도 long 타입이 되어야 하고,
z 변수는 long 타입이어야 한다.


2. 비교 연산자(<, <=, >, >=, ==, !=)
- 피연산자가 char 타입이면 유니코드 값으로 비교 연산을 한다.
- 예를 들어 'A' = 65, 'B' = 66이므로 65와 66을 비교한다.
- 비교 연산자에서도 연산을 수행하기 전에 타입 변환을 통해 피연산자의 타입을 일치시킨다.
- 예를 들어 'A' == 65는 'A'가 65로 된 다음 비교, 3 == 3.0은 3을 보다 큰 타입인 3.0으로 변환 후 비교한다.
3. 비트 연산자(&, |, ^, <<, >>, >>>)
- 비트 단위로 연산한다. 즉 0과 1이 피연산자가 된다.
- 0과 1로 표현이 가능한 정수 타입만 비트 연산을 할 수 있다.
3-1) 비트 논리 연산자
- 피연산자를 int 타입으로 자동 타입 변환 후 연산을 수행한다.
- byte, short, char 타입을 비트 논리 연산하면 그 결과는 int 타입이 된다.
ex) 45와 25 논리 연산 예시

3-2) 비트 이동 연산자
- 정수 데이터의 비트를 좌측 또는 우측으로 밀어서 이동시키는 연산을 수행한다.
- 쉬프트 연산을 사용하는 이유는 속도 때문이다.
1) a << b ( a * 2^b)
정수 a의 각 비트를 b만큼 왼쪽으로 이동(빈자리는 0으로 채움)
2) a >> b ( a / 2^b)
정수 a의 각 비스를 b만큼 오른쪽으로 이동(빈자리는 정수a의 최상위 부호 비트와 같은 값으로 채워짐)
3) a >>> b
정수 a의 각 비트를 b만큼 오른쪽으로 이동(빈자리는 0으로 채워짐)
4. 삼항 연산자
- (조건식) ? (값 or 연산식) : (값 or 연산식)
- 피연산자1 피연산자2 피연산자3
- 조건식이 참이면 피연산자2, 거짓이면 피연산자 3
ex)

'JAVA > 문법' 카테고리의 다른 글
| [Java/문법] 스레드-1 (0) | 2022.01.04 |
|---|---|
| [Java/문법] 입출력(I/O) (0) | 2022.01.04 |
| [Java/문법] 클래스 (0) | 2022.01.03 |
| [Java/문법] Main 메소드 (0) | 2022.01.03 |
| [Java/문법] 강제 타입 변환 주의점 (0) | 2022.01.03 |