[Java의 정석] 그 외의 연산자

말하는 감자·2023년 11월 16일
0

Java의 정석

목록 보기
30/32
post-thumbnail

Chapter 03 연산자(Operator)

6. 그 외의 연산자

📌 조건 연산자 ? :

조건 연산자는 조건식, 식1, 식2 모두 세 개의 피연산자를 필요로 하는 삼항 연산자이며, 삼항 연산자는 조건 연산자 하나뿐이다.

조건 연산자는 첫 번째 피연산자인 조건식의 평가결과에 따라 다른 결과를 반환한다.
조건식의 평가결과가 true이면 식1이, false이면 식2가 연산결과가 된다. 가독성을 높이기위해 조건식을 괄호()로 둘러싸는 경우가 많지만 필수는 아니다.

result = (x > y) ? x : y;

위의 문장에서 식 x > y의 결과가 true이면 result에는 x의 값이 저장되고, false이면 y의 값이 저장된다.
만일 x의 값이 5, y의 값이 3이라면, 이 식은 다음과 같은 과정으로 계산된다.

	result = (x > y) ? x : y;
➡️	result = (5 > 3) ? 5 : 3;
➡️	result = (true) ? 5 : 3;	// 조건식이 true(참)이므로 연산결과는 5
➡️	result = 5;

📌 대입 연산자 = op=

대입 연산자는 변수와 같은 저장공간에 값 또는 수식의 연산결과를 저장하는데 사용된다. 이 연산자는 오른쪽 피연산자의 값(식이라면 평가값)을 왼쪽 피연산자에 저장한다. 그리고 저장된 값을 연산결과로 반환한다. 예를 들어, 아래의 문장은 변수 x에 3을 저장하고, 연산결과인 3을 화면에 출력한다.

	System.out.println(x = 3);	// 변수 x에 3이 저장되고
➡️	System.out.println(3);		// 연산결과인 3이 출력된다.

대입 연산자는 연산자들 중에서 가장 낮은 우선순위를 가지고 잇기 때문에 식에서 제일 나중에 수행된다. 그리고 연산 진행 방향이 오른쪽에서 왼쪽이기 때문에 x=y=3;에서 y=3이 먼저 수행되고 그 다음에 x=y가 수행된다.

📍 lvalue와 rvalue

대입 연산자의 왼쪽 피연산자를 'lvalue(left value)'이라 하고, 오른쪽 피연산자를 'rvalue(right value)'라고 한다.

대입연산자의 rvalue는 변수뿐만 아니라 식이나 상수 등이 모두 가능한 반면, lvalue는 반드시 변수처럼 값을 변경할 수 있는 것이어야 한다. 그래서 리터럴이나 상수같이 값을 저장할 수 없는 것들은 lvalue가 될 수 없다.

int i = 0;
3 = i + 3;			// 에러. lvalue가 값을 저장할 수 있는 공간이 아니다.
i + 3 = i;			// 에러. lvalue의 연산결과는 리터럴(i+3➡️0+3➡️3)

final int MAX = 3;	// 변수 앞에 키워드 final을 붙이면 상수가 된다.
MAX = 10;			// 에러. 상수(MAX)에 새로운 값을 저장할 수 없다.

📍 복합 대입 연산자

대입 연산자는 다른 연산자(op)와 결합하여 op=와 같은 방식으로 사용될 수 있다. i = i + 3i += 3과 같이 표현될 수 잇다. 그리고 결합된 두 연산자는 반드시 공백없이 붙여 써야 한다.


📑 원본 자료

  • Java의 정석(3판) [남궁 성/도우출판/2016]
profile
나는 말하는 감자다

0개의 댓글