■ 연산자 우선순위

수학에서 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와 같이 괄호를 명시적으로 사용하는 것이 명확하고 이해하기 쉽다.
# 코드를 몇자 줄여서 모호하거나 복잡해지는 것 보단 코드가 더 많더라도 명확하고 단순한 것이 유지보수에 좋다

# 연산자 우선 순위가 애매하거나 조금 더 복잡하다면 괄호를 사용하자!


- 연산자 우선순위 암기법

: 괄호( )가 우선순위가 가장 높고, 마지막의 대입 연산자 ( = )가 우선순위가 가장 낮다.

  1. 괄호 ( )
  2. 단항 연산자 (예 : ++, --, !, ~, new, (type) )
  3. 산술 연산자 ( *, /, % 우선, 그 다음 +, - )
  4. shift 연산자 ( <<, >>, >>>)
  5. 비교 연산자 ( <. <=, >, >=, instanceof )
  6. 등식 연산자 ( ==, != )
  7. 비트 연산자 ( &, ^, | )
  8. 논리 연산자 ( &&, || )
  9. 삼항 연산자 ( ? : )
  10. 대입 연산자 ( = , += , -= , *= , /= , %= 등 )

※ 연산자 우선순위는 딱 2가지만 기억하자!

  1. 상식선에서 우선순위 사용하기
    # 우선순위는 상식선에서 생각하면 대부분 문제가 없다.
    예시1) int sum = 1 + 2 * 3;
    위 예를 보면 + 보다 * 가 우선순위가 높다.

    예시2) int sum = 1 + 2;
    1 + 2를 먼저 처리한 다음 그 결과 값을 변수 sum에 대입한다. 대입 연산자가 먼저 수행된다고 생각하기가 더 어렵다.
  2. 애매하면 괄호 ()를 사용하자
    # 코드를 보았을 때 연산자 우선순위의 고민이 필요하다면 괄호를 사용하여 명시적으로 지정하자
    예시) ((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

+ Recent posts