[Java] 연산자의 우선순위

MSU·2023년 11월 22일

JAVA

목록 보기
8/28

자바에서 연산자의 우선순위는 아래의 순서대로 보면 된다.

  1. 최우선 연산자 : . [] ()

    • . : 메모리에 생성된 객체의 멤버에 접근 등 특정 매개체의 하위에 접근할 때 사용하는 연산자
    • [] : 배열에서 요소에 접근하고자 할 때 사용하는 연산자
    • (): 수식에서 연산의 우선 순위를 조정하고자 할 때 사용
  2. 단항 연산자 : !, ~, +/-, ++/--, (cast)

    • ~ : 숫자의 비트를 0은 1로, 1은 0으로 바꿔주는 연산자
    i1 = 1100100
    ~i1 = 0011011
    
    i1 = 100
    ~i1 + 1 = -100
    -> 숫자 100의 이진수를 먼저 구한 후 값을 뒤집음, 그 후에 1을 더해주면 -100이 됨
  3. 산술 연산자 : +, -, *, /, %

    "100" + 200 + 300
    -> "100200" + 300
    -> "100200300"
    
    100 + 200 + "300"
    -> 300 + "300"
    -> "300300"
  4. 시프트 연산자 : <<, >>, >>>

    • >> : 비트를 오른쪽으로 이동시켜주는 연산(부호를 유지시켜준다),
      >> n은 2의 n승 나누기 만큼의 연산이 이루어짐
    Integer.toBinaryString(100 >> 1)
    
    0000 1000 -> 0000 0100 
    1000 1000 -> 1100 0100
    마지막0은 이동하면서 버려지고 이동하면서 비워지는 첫째자리는 원래 첫째자리값으로 매꿔짐
    • << : 비트를 좌측으로 이동시켜주는 연산, << n은 2의 n승 곱하기 만큼의 연산이 이루어짐
    0000 1000 -> 0001 0000
    • >>> : 비트를 오른쪽으로 이동시켜주는 연산(무조건 0으로 채워진다.)
    0000 1000 -> 0000 0100
    1000 1000 -> 0100 0100
  5. 관계 연산자 : >, <, >=, <=, ==, !=

  6. 비트 연산자 : &, ^, |

    • & : 두 수를 2진수로 변환한 후 각 자리를 비교하여 둘 다 1일 경우만 1이 되는 연산자
    1000 1000 & 0000 1000 = 0000 1000
    • | : 두 수를 2진수로 변환한 후 각 자리를 비교하여 둘 중에 하나라도 1이면 1이 되는 연산자
    1000 1000 & 0000 1000 = 1000 1000
    • ^ : 두 수를 2진수로 변환한 후 각 자리를 비교하여 두 비트가 같으면 0, 다르면 1이 되는 연산자
    1000 1000 & 0000 1000 = 1000 0000
  7. 논리 연산자 : &, |, &&, ||

    • & : 기본적인 연산은 &&와 같지만 좌측 연산 결과 값이 false라고 하더라도 이후의 연산을 모두 수행함
    k1 = 100;
    k2 = 200;
    
    ++k1 < 100 && ++k2 > 200
    -> false
    -> k1 = 101, k2 = 200
    
    ++k1 < 100 & ++k2 > 200
    -> false
    -> k1 = 101, k2 = 201
    • | : 기본적인 연산은 ||와 같지만 좌측 연산 결과 값이 true라고 하더라도 이후의 연산을 모두 수행함
  8. 삼항 연산자 : 조건항 ? 항1 : 항2

  9. 배정 대입 연산자 : =, +=, -=, *=, /=, %=, <<=, >>=, ^=, &=

  10. 후위형 증감 연산자 : ++/--

profile
안드로이드공부

0개의 댓글