移位运算符的概念
移位运算符------------------------------
<<左移运算符,用于将数据的二进制位向左移动,右边使用0补充
>>右移运算符,用于将数据的二进制位向右移动,左边使用符号位补充
>>>表示逻辑右移运算符(无符号右移运算符),用于将数据的二进制位向右移动,左边使用0补充
public class _16{
public static void main(String[] args){
byte b1 = 13;
System.out.println(" b1 = " + b1);
System.out.println("--------------------------------------------------------------------");
byte b2 = (byte)(b1 << 1);
System.out.println("b2 = " + b2);
System.out.println(b1 << 1);
System.out.println(b1 << 2);
System.out.println("--------------------------------------------------------------------");
System.out.println(b1 >> 1);
System.out.println(b1 >> 2);
System.out.println("--------------------------------------------------------------------");
System.out.println(b1 >>> 1);
byte b3 = -1;
System.out.println(b3 >>> 1);
}
}
位运算符------------------------------
&表示按位与运算符,按照二进制位进行与运算,同1为1,单0为0
|表示按位或运算符,按照二进制位进行或运算,单1为1,同0为0
~表示按位取反运算符,按照二进制位进行取反,1为0,0为1
^表示按位异或运算符,按照二进制位进行异或运算,同为0,不同为1
public class _17{
public static void main(String[] args){
byte b1 = 11;
byte b2 = 13;
System.out.println("b1 = " + b1);
System.out.println("b2 = " + b2);
System.out.println("--------------------------------------------------------------------");
System.out.println(b1 & b2);
System.out.println(b1 | b2);
System.out.println(b1 ^ b2);
System.out.println(~ b1);
}
}
运算符的优先级------------------------------
优先级就是优先计算的级别(越上面,那么优先级越大)
结合性只是代表操作方向是哪里,比如=,他是从右到左的结合性,那么如果说x=y=z=0,也就是都是0,首先是z=0,先处理,然后处理y=z,以此类推,这就是结合性的意思,即代表改符号是从哪个方向开始处理的
()优先级极高
=优先级极低
若无法确认优先级,则使用()来确保即可,并非一定需要背下优先级,因为我们只需要使用()即可,且他可能随着jdk版本的变化而改变,所以只需要了解即可