-
&&和&之间的区别?
-
相同点:&&和&都是逻辑的与,相当于汉文中并且的意思,需要前后两个条件都成立才能执行
-
不同点:&&叫做逻辑的短路与,有短路特性
-
短路特性:如果通过前面的条件可以得出最终的结果,后面的条件直接舍弃,不再判断
-
-
||和|之间的区别?
-
相同点:||和|都是逻辑的或,相当于汉文中或者的意思,需要前后一个条件成立就能执行
-
不同点:||叫做逻辑的短路或,有短路特性
-
boolean && boolean true 判断 false 短路(停止继续判断条件) boolean || boolean true 短路(停止继续判断条件) false 判断
在某些情况下可以取代%
-
某些情况:当拿着一个正数m % 上2的n次方数的时候 ------> m%(2的n次方)
-
结果等价于
-
拿着这个正数 & 上2的n次方数-1 的结果 ------->m&((2的n次方)-1) 【效率高】
-
27 %2 %4 %8 %16....2^(n) //27分别取余2,4,8,16(2,4,8,16是2的n次方) 1 3 3 11 27 &1 &3 &7 &15....&2^(n)-1 //27分别与1,3,7,15 1 3 3 11 综上所述,27分别取余2,4,8,16的结果与27分别与1,3,7,15的结果相同,但是&的效率更高 System.out.println(100 % 8); //4 System.out.println(100 & 7); //4
-
[>> << >>>] 位[指二进制位]移运算符【<<相当于乘以 >>相当于除以】
-
<<相当于乘以 >>相当于除以 移动多少位相当于乘以/除以2的几次方数 *2 *4 *8 *16.... *2(n) <<1 <<2 <<3 <<4.... <<n /2 /4 /8 /16...../2(n) >>1 >>2 >>3 >>4.....>>n 注意:当乘或除2的n次方时,可以采用<<或>>来代替,而且<<或>>的效率高 >>和>>>之间的区别? >>叫做有符号右移 移动之后空缺的高位看原本的符号位 01001011 >> 2 高位为0,所以下面空缺位置补0 00010010 10001010 >> 3 高位为1,所以下面空缺位置补1 11110001 >>>叫做无符号右移 移动之后空缺的高位补0 【无论高位为几,空缺位置都补0】 01001011 >>> 2 00010010 10001010 >>> 3 00010001
instanceof:判断左边的对象是否属于右边的类型【对象 instanceof 类】
-
public class e32705{ public static void main(String[] args){ Bird b = new Bird(); Person p = new Person(); System.out.println(b.equals(p)); } } class Bird{ @Override public boolean equals(Object obj){ if(obj instanceof Bird) return true; return false; } } class Person{}
-