1,~取反运算符
~4 = -5
计算方法就是取反减一,~ -8 = -10;
2,<<,>>,>>>
<<
左移,8<<2 = 32运算方法就是8乘以2的二次方
“>>”
右移,8>>2 = 2运算方法就是8除以2的二次方
“>>>”
无符号右移,8>>>2 = 2运算方法,当为正数运算时结果与>>没有区别,但是当为负数时就不一样了,目前我不知道怎么一下子加减乘除算出结果,如若有哪位大神知道欢迎告知,但是在这里说明一下原理,
当是负数进行位运算时,例如-8>>2表示把-8的二进制数向右移2位,高位补得标志位,负数的标志位1,正数的是0,但是,-8>>>2这里补得是0,无论是正数负数<<<都是补零的,所以当是正数位运算>>>和>>结果一样
3.逻辑&&和位&的区别
&&:当第一个条件为false时将不再检查第二个条件,短路,
&:无论第一个条件是否俄日false两个条件都要检查
举例
public class ex {
public static void main(String[] args) {
int a = 5;
int c = 20;
System.out.println(a > c && a++ < c);
System.out.println(a);//a++并没有执行,短路了a还是5
System.out.println(a > c & a++ <c);//a++执行了,所以此时a就变成了6了
System.out.println(a);
}
}
结果
false
5
false
6
4,逻辑||和位|
与上面的上一条类似,当第一个条件为TRUE时,||将不再判断第二个条件的真假,但是|无论第一个条件真假第二个条件仍要检查,这里就不举例子
5.符合运算
+=、-=、*=、/=、%=、 < <=、>>=、>>>=、&=、^=
和|=
在java中a += 2和a = a+2是不一样的,复合赋值 E1 op= E2 等价于简单赋值E1 = (T)((E1)op(E2)),其中T 是E1 的类型,也就是说复合运算包含类型转换
int x = 6
x = x + 1.1;//错误,x+1.1得到的结果是double型
x += 1.1;//正确