Back-end/java

[혼공자][챕터3] 연산자

Nellie Kim 2022. 11. 8. 17:45
728x90

1. 연산자와 연산식

연산의 우선순위

산술 → 비교 → 논리  → 대입 연산자

산술 : + - * / %
비교 : == > < !=
논리 : & && | || ! 

그러나 우선순위 관계없이 먼저 연산을 하고 싶다면 괄호()로 묶어주면 된다. 괄호가 감싼 연산이 최우선순위를 갖는다.

 

- 연산의 우선순위 문제 (p.104)

문제) 아래의 식에서 <>, &&중 먼저 수행되는 연산자는?
 x > 0 && y < 0

답) 비교(<>)가 논리(&&)보다 우선이므로 x>0, y<0 먼저 연산 후, &&을 연산한다.

 

2. 연산자의 종류

단항 연산자 : ++x;
이항 연산자 : x + y;
삼항 연산자 : (sum > 90) ? "A" : "B";

논리연산자 &와 &&의 차이

&&는 앞의 피연산자가 false라면 뒤의 피연산자를 평가하지 않고 바로 false라는 산출 결과를 낸다.

&는 두 피연산자 모두를 평가해서 산출 결과를 낸다.

따라서 &&가 더 효율적이다.

 

 

- 단항 연산자 중 증감 연산자 문제(p.111)

문제) 다음 코드에서 result1, result2에 저장되는 값은?
int x = 1;
int y = 1;
int result1 = ++x + 10;
int result2 = y++ + 10;

답) result1에는 12, result2에는 11이 저장된다.
x는 먼저 2가 된후 → 10이 더해져서 result1이 12가 되고, 
y는 10이 먼저 더해져서 result2가 11이 된 후에 → y가 2가 된다.


이렇게 증감연산자가 변수 뒤에 있을 경우(ex. y++) 다른 연산자를 먼저 처리한 후, 변수 값을 1을 증가시킨다.

 

- 이항 연산자 중 산술 연산자 문제 (p.116)

문제) 다음 코드에서 result2, result3에 저장되는 값은?

int int1 = 10;
int int2 = 4;
int result2 = int1 / int2;
double result3 = int1 / int2;

답) result2는 정수의 연산이므로 2
result3은 2.0이 저장된다.
int1, int2의 연산결과 자체가 2이므로, 2로 계산 후에 → double형태로 실수화 시켜서 2.0이 저장된다.

출처 : 혼자 공부하는 자바