Jun's Development Journey

[Java/문법] 연산자 본문

JAVA/문법

[Java/문법] 연산자

J_Jayce 2022. 1. 3. 15:44

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