1.Java运算符优先级:(从左往右优先级越小)
[ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> < > < = > = == != & ^ && || ? : op=
2.左移:(<<) 操作数乘以2的n次方 ,不够就是补0
System.out.println(6<<2); //6 x 2 x2 = 24
3.右移:(>>) 操作数除以2的n次方 ,(这里注意点:如果是负数的话就是补1,正数补0)
System.out.println(6>>2); 6 /(2*2) = 1
4.无符号右移 :(都是补0的操作)
5.左移,右移的应用:
1.需求:交换两个数字的大小,不能使用三方变量来实现改功能
//方式一: 相加法
//方式二: 异或法
//方式一:相加法,确定是不能超过Int的存储的范围
int a = 5;
int b = 3;
a = a + b;//a = 5+3 = 8
b = a - b;//b = 8-3 = 5
a = a - b;//a = 8-5 = 3
//方式二:异或法
int a = 5;
int b = 3;
a = a^b;//a = 5^3
b = a^b;//b = 5^3^3 = 5
a = a^b;//a = 5^3^5 = 3
2.需求:求一个数的低四位的值 (使用与&)