上一节写了一些运算符的注意事项,这节开头依然是对运算符的一些注意点的阐述!
比较运算符除了>、>=、<、<=、==、!=之外需要注意instanceof:检查是否是类的对象,例如:”Hello” instanceof String ,返回结果位true。
1.逻辑运算符
&(与)的运算特点:运算的两边只要有一个是false,结果肯定是false,只有两边都为true,结果才true;
|(或)的运算特点:运算的两边只要有一个是true,结果肯定是true,只有两边都为false,结果是false;
^(异或)的运算特点:运算的两边结果如果相同,结果是false,两边的结果不同,结果是true;
!(非)的运算特点:判断事物的另一面;
&&(短路 双与)的运算特点:与&运算基本一致,只是&&当左边为false时,右边不参与运算的,而&两边都得运算;
||(短路 双或)的运算特点:与|运算基本一致,只是||当左边为true时,右边不参与运算的,而|两边都得运算;
2.位运算符
&(与位运算符):运算特点与逻辑运算符的&一样,只是这里针对二进制的位运算,例如:6&3=2;(二进制原理:110&011=010),任何数与位为1取&运算都为原来数(作用取某些有效位数);
| (或运算符):运算特点或逻辑运算符的&一样,只是这里针对二进制的位运算,例如:6|3=7;(二进制原理:110|011=111);
^(异或运算符):运算特点与逻辑运算符的^一样,只是这里针对二进制的位运算,例如:6^3^3 = 6,注:当一个数异或运算同一个数两次,结果还是这个数本身(作用为加密的效果)
~ (反码运算符):运算特点与符逻辑运算符中的!一致的。
<<(左移运算符):左移几位其实就是该数据乘以2的几次方。可以完成2的次幂运算! eq:3<<2 = 3*2(2) = 12;
>> (右移运算符) : 右移几位其实就是该数据除以2的几次幂。对于高位出现的空位,原来高位是什么就用什么补这个空位! eq:3>>2 = 3/2(2) = 3/4 = 0;
>>>(无符号右移运算符):数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补。
练习:
1.//最有效率的方式算出2乘以8等于几? 答案:System.out.println(2<<3);
2.对两个整数变量的值进行互换 ?
答案:
开发时,使用第三方变量的形式,因为阅读性强。
int c ;
c = a;
a = b;
b = c;
这种方式不要用,如果两个整数的数值过大,会超出int范围,会强制转换。数据会
变化。
a = a + b; //a = 3 + 5;a = 8;
b = a – b; //3+5-5 = 3;b = 3;
a = a – b; //3+5-3 = 5;a = 5;
面试的时候用。
a = a ^ b; //a = 3 ^ 5;
b = a ^ b; //b = (3^5)^5; b = 3;
a = a ^ b; //a = (3^5)^3; a = 5;