1. 短路运算
package superlily;
public class Demo04 {
public static void main(String[] args) {
int i = 5;
boolean b = (i<4) && (++i < 5); //(i<4) 为false, 程序不再继续执行后面的判断(++i < 5), 直接把false赋给b
System.out.println(i); // 所以i是5, 因为i没有做过+1的运算
}
}
2. 如何最高效(快)地计算 2*8 的值?
位运算在计算机里是直接和底层打交道的,相当于电路换一个地方开灯,比正常的乘法要快,效率极高。
/*
A = 0011 1100
B = 0000 1101
---------------
A&B =0000 1100
A|B =0011 1101
A^B = 0011 0001 异或运算, 只要不同就是1, 相同就是0
~B = 1111 0010 取反运算
*/
int ii =2;
/*
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
int bb = 2<<3;
System.out.println(bb); //16