
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;