Java/Java의 정석

[Java의 정석] 03. 연산자

동현 유 2022. 3. 5. 18:38
모르는 것만 짧고 빠르게 정리한 노트입니다.

 

 

1.4 연산자 우선순위

 - instanceof 는 비교연산자 <, >, <=, >= 와 우선순위가 동일하다.

 

1.5 일반 산술 변환

  - 피연산자의 타입이 다르면, 더 큰 타입으로 자동 형변환된다. (overflow 방지)

  - 피연사자의 타입이 int 보다 작은 타입이면 int 로 변환된다.

 

3.1 사칙 연산자

  - 상수 또는 리터럴 간의 연산은, 컴파일러가 최적화를 진행한다.

char c1 = 'a'

// char c2 = c1 + 1;  // compile error! 명시적 형변환 필요!
char c2 = 'a' + 1;  // java complier 에 의해 'b'로 치환됨.
3.2 나머지 연산자

  - 우항은 0이 될 수 없다.

  - 음수도 가능한데, 양수일 때와 절대값이 동일하고 부호는 왼쪽 피연산자를 따른다.

 

5.1 논리 연산자

  - short circuit evaluation : 앞 식을 평가한 값으로 전체의 결과가 정해지는 경우, 더이상 계산을 하지 않음.

 

5.2 비트 연산자

  - 비트 전환 연산자 ~ : 부호있는 타입의 연산 결과로, 1의 보수를 얻는다. int 보다 작은 경우 int 로 자동 형변환 후 연산한다.

  - 쉬프트 연산자 : arithmetic shift / logical shift, 피연사자 타입을 일치시킬 필요가 없기 때문에, 좌측 피연사자가 int 보다 작은 경우는 int 로 자동 형변환 된다.

 

6.1 삼항 연산자

  - 두 식의 타입이 다른 경우, 산술변환 발생.