■ 연산자 우선순위
수학에서 1 + 2 * 3 의 연산결과를 생각해보면 덧셈보다 곱셈의 우선순위가 다 높다.
1 + (2 * 3) // 곱셈 (*) 먼저 계싼
결과 = 7
예제 코드1)
package operator;
public class Operator3 {
public static void main(String[] args) {
int sum1 = 1 + 2 * 3; // 1 + (2 * 3)과 같다.
int sum2 = (1 + 2) * 3;
System.out.println(sum1);
System.out.println(sum2);
}
}
실행 결과)

# sum1 = 7이 출력된 것으로 확인된다. 연산자 우선순위에 의해 곱셈 먼저 계산
# 연산자 우선순위를 변경하려면 수학과 동일하게 괄호 ()를 사용하면된다. ( )를 사용한 곳이 먼저 계산된다.
예제 코드2)
package operator;
public class Operator4 {
public static void main(String[] args) {
int sum3 = 2 * 2 + 3 * 3; //(2*2)+(3*3)
int sum4 = (2 * 2) + (3 * 3); //sum3과 동일
System.out.println(sum3);
System.out.println(sum4);
}
}
실행결과)

# 복잡한 코드의 경우 sum4와 같이 괄호를 명시적으로 사용하는 것이 명확하고 이해하기 쉽다.
# 코드를 몇자 줄여서 모호하거나 복잡해지는 것 보단 코드가 더 많더라도 명확하고 단순한 것이 유지보수에 좋다
# 연산자 우선 순위가 애매하거나 조금 더 복잡하다면 괄호를 사용하자!
- 연산자 우선순위 암기법
: 괄호( )가 우선순위가 가장 높고, 마지막의 대입 연산자 ( = )가 우선순위가 가장 낮다.
- 괄호 ( )
- 단항 연산자 (예 : ++, --, !, ~, new, (type) )
- 산술 연산자 ( *, /, % 우선, 그 다음 +, - )
- shift 연산자 ( <<, >>, >>>)
- 비교 연산자 ( <. <=, >, >=, instanceof )
- 등식 연산자 ( ==, != )
- 비트 연산자 ( &, ^, | )
- 논리 연산자 ( &&, || )
- 삼항 연산자 ( ? : )
- 대입 연산자 ( = , += , -= , *= , /= , %= 등 )
※ 연산자 우선순위는 딱 2가지만 기억하자!
- 상식선에서 우선순위 사용하기
# 우선순위는 상식선에서 생각하면 대부분 문제가 없다.
예시1) int sum = 1 + 2 * 3;
위 예를 보면 + 보다 * 가 우선순위가 높다.
예시2) int sum = 1 + 2;
1 + 2를 먼저 처리한 다음 그 결과 값을 변수 sum에 대입한다. 대입 연산자가 먼저 수행된다고 생각하기가 더 어렵다. - 애매하면 괄호 ()를 사용하자
# 코드를 보았을 때 연산자 우선순위의 고민이 필요하다면 괄호를 사용하여 명시적으로 지정하자
예시) ((2 * 2) + (3 * 3) / (3 + 2)
※ 정리
- 연산자 우선순위는 상식선에서 생각하고, 애매하면 괄호를 사용하자.
- 누구나 코드를 보고 쉽고 명확하게 이해할 수 있어야한다.
개발자들이 연산자 우선순위를 외우고 개발하는 것이 아니기 때문에 복잡하면 명확하게 괄호를 넣자! - 개발에서 가장 중요한 것은 단순함과 명확함이다. 애매하거나 복잡하면 안된다.
'Language > Java' 카테고리의 다른 글
| Java 비교 연산자 (0) | 2024.06.27 |
|---|---|
| Java 증감 연산자 (0) | 2024.06.27 |
| Java 문자열 더하기 (0) | 2024.06.27 |
| Java 산술 연산자 (0) | 2024.06.27 |
| Java 변수 문제풀이 (0) | 2024.06.27 |