자바에서 연산자의 우선순위는 아래의 순서대로 보면 된다.
최우선 연산자 : . [] ()
단항 연산자 : !, ~, +/-, ++/--, (cast)
i1 = 1100100
~i1 = 0011011
i1 = 100
~i1 + 1 = -100
-> 숫자 100의 이진수를 먼저 구한 후 값을 뒤집음, 그 후에 1을 더해주면 -100이 됨
산술 연산자 : +, -, *, /, %
"100" + 200 + 300
-> "100200" + 300
-> "100200300"
100 + 200 + "300"
-> 300 + "300"
-> "300300"
시프트 연산자 : <<, >>, >>>
Integer.toBinaryString(100 >> 1)
0000 1000 -> 0000 0100
1000 1000 -> 1100 0100
마지막0은 이동하면서 버려지고 이동하면서 비워지는 첫째자리는 원래 첫째자리값으로 매꿔짐
0000 1000 -> 0001 0000
0000 1000 -> 0000 0100
1000 1000 -> 0100 0100
관계 연산자 : >, <, >=, <=, ==, !=
비트 연산자 : &, ^, |
1000 1000 & 0000 1000 = 0000 1000
1000 1000 & 0000 1000 = 1000 1000
1000 1000 & 0000 1000 = 1000 0000
논리 연산자 : &, |, &&, ||
k1 = 100;
k2 = 200;
++k1 < 100 && ++k2 > 200
-> false
-> k1 = 101, k2 = 200
++k1 < 100 & ++k2 > 200
-> false
-> k1 = 101, k2 = 201
삼항 연산자 : 조건항 ? 항1 : 항2
배정 대입 연산자 : =, +=, -=, *=, /=, %=, <<=, >>=, ^=, &=
후위형 증감 연산자 : ++/--