
Java에서 연산자는 특정한 우선순위를 가지며, 이 우선순위에 따라 연산이 수행됩니다. 연산자 우선순위를 정확히 이해하지 않으면 코드가 예상과 다르게 동작할 수 있습니다. 이번 글에서는 Java의 연산자 우선순위를 자세히 정리하고, 왜 그런 순서가 정해졌는지도 설명하겠습니다.
| 우선순위 (높음 → 낮음) | 연산자 | 설명 |
|---|---|---|
| 1 | () | 괄호 (가장 높은 우선순위) |
| 2 | ++, --, !, ~, +, - | 단항 연산자 (증감, 논리 NOT, 비트 NOT, 부호 연산) |
| 3 | *, /, % | 곱셈, 나눗셈, 나머지 연산 |
| 4 | +, - | 덧셈, 뺄셈 |
| 5 | <<, >>, >>> | 비트 이동 연산 |
| 6 | <, <=, >, >=, instanceof | 비교 연산 |
| 7 | ==, != | 동등 비교 연산 |
| 8 | && | 논리 AND |
| 9 | ∥ | 논리 OR |
| 10 | ?: | 삼항 연산자 |
| 11 | =, +=, -=, *=, /=, %= | 대입 연산자 (가장 낮은 우선순위) |
연산은 산술 → 비교 → 논리 → 대입 순서로 진행됩니다.
boolean flag = 10 + 5 > 12 && true;
System.out.println(flag);
실행 순서:
1. 10 + 5 → 15 (산술 연산)
2. 15 > 12 → true (비교 연산)
3. true && true → true (논리 연산)
4. flag = true (대입 연산)
즉, 산술 → 비교 → 논리 → 대입 순서로 연산이 수행됩니다.
! → && → ||)boolean result = true || false && !false;
System.out.println(result);
실행 순서:
1. !false → true (!가 가장 먼저 수행됨)
2. false && true → false (&&가 ||보다 우선순위가 높음)
3. true || false → true (|| 연산 수행)
📌 왜 &&가 ||보다 먼저 실행될까?
&&는 둘 다 true여야 true를 반환하는 엄격한 조건이므로 먼저 검사해야 함.||는 하나만 true여도 true를 반환하는 느슨한 조건이라 나중에 처리해도 무방함.결론: && 연산을 먼저 해서 확실한 결과를 만든 후 || 연산을 수행하는 것이 논리적으로 안전합니다.
1️⃣ 괄호 ()를 적극적으로 사용하자!
boolean result = (true || false) && false;2️⃣ 단락 평가(Short-Circuit Evaluation) 이해하기
&&: 첫 번째 값이 false이면 뒤를 보지 않음.||: 첫 번째 값이 true이면 뒤를 보지 않음.boolean test = false && someExpensiveMethod(); // 뒤의 연산은 실행되지 않음.
boolean test2 = true || someExpensiveMethod(); // 뒤의 연산은 실행되지 않음.3️⃣ 우선순위가 헷갈리면 괄호로 명확하게 표현!
a + b * c 보다 (a + b) * c처럼 명확하게 작성하면 가독성이 높아짐.Java 연산자 우선순위는 산술 → 비교 → 논리 → 대입 순서로 진행됩니다. 논리 연산자의 경우 ! → && → || 순으로 실행되며, &&가 ||보다 먼저 실행되는 이유는 논리적으로 더 엄격한 검사를 수행해야 하기 때문입니다.
✔ 우선순위가 헷갈린다면 괄호를 사용해 명확하게 표현하는 것이 좋은 코드 스타일입니다! 🎯
완