Java의 산술, 단항, 비교, 논리, 조건, 대입 연산자
연산자 | 설명 |
---|---|
+ | 덧셈 연산자(문자열을 결합할 때도 사용) |
- | 뺄셈 연산자 |
* | 곱셈 연산자 |
/ | 나눗셈 연산자 |
% | 나머지 연산자: 왼쪽의 피연산자를 오른쪽 피연산자로 나누고 난 나머지 값을 결과로 반환, 피연산자로 정수만 허용 |
연산자 | 설명 |
---|---|
+ | 양수 부호 연산자(거의 쓰이지 않음) |
- | 음수 부호 연산자: 피연산자의 부호를 반대로 변경한 결과를 반환 |
++ | 증가 연산자: 피연산자의 값을 1 증가시킨다. |
-- | 감소 연산자: 피연산자의 값을 1 감소시킨다. |
타입 | 설명 | 예시 |
---|---|---|
전위형(prefix) | 값이 참조되기 전에 증감시킨다. | j = ++i; |
후위형(postfix) | 값이 참조된 후에 증감시킨다. | j = i--; |
전위형은 변수(피연산자)의 값을 먼저 증감시킨 후에 변수의 값을 읽어오는 반면, 후위형은 변수의 값을 먼저 읽어 온 후에 값을 증감시킴.
// 전위형) j = ++i;
++i; // 증가 후에
j = i; // 참조하여 대입
// 후위형) j = i++;
j = i; // 참조하여 대입 후에
i++; // 증가
대소비교 연산자: 두 피연산자의 값의 크기를 비교.
비교 연산자 | 연산 결과 |
---|---|
> | 좌변 값이 크면 true, 아니면 false |
< | 좌변 값이 작으면 true, 아니면 false |
>= | 좌변 값이 크거나 같으면 true, 아니면 false |
<= | 좌변 값이 작거나 같으면 true, 아니면 false |
동등비교 연산자: 두 피연산자의 값이 같은지 아닌지를 비교.
비교 연산자 | 연산 결과 |
---|---|
== | 두 값이 같으면 true, 아니면 false |
!= | 두 값이 다르면 true, 아니면 false |
※ 서로 다른 참조형의 내용을 비교하고 싶다면 equals() 메서드를 사용해야 한다.
|| (OR 결합): 피연산자 중 어느 한 쪽이 true인 경우 true를 반환.
&& (AND 결합): 피연산자 양쪽 모두 true이어야 true를 반환.
피연산자 | OR 결합 | AND 결합 |
---|---|---|
true / true | true | true |
true / false | true | false |
false / true | true | false |
false / false | false | false |
❓ Short-circuit evaluation(단락 평가)
단락 평가란 두 번째 조건의 검사가 첫 번째 조건의 결과에 따라 실행되는 것을 뜻한다. 예를 들어 OR 결합에서 첫 번째 조건의 결과가 true인 경우 두 번째 조건의 결과에 상관없이 식의 결과는 true이므로 두 번째 조건의 검사를 하지 않는 것이 효율적이다. 이를 자바에서는 ‘||’와 같이 | 연산자 2개를 붙여쓰는 단락 연산자(Short-circuit operator)로 표현할 수 있다.
int a = 0;
System.out.println("1. a: " + a);
// 단락 평가
if(a == 0 || a++ == 1 ) {
// 단락 평가에 의해서 첫 번째만 실행
System.out.println("2. || a: " + a);
}
System.out.println("3. a: " + a);
if(a == 0 | a++ == 1 ) {
// 단락 평가를 하지 않았기 때문에 두 번째까지 실행
System.out.println("4. | a: " + a);
}
System.out.println("5. a: " + a);
x | !x |
---|---|
true | false |
false | true |
// 조건 연산자
result = x > y ? true : false;
// if-then-else문
if(x > y) result = true;
else result = false;