1 package operator; 2 3 public class Demo2 { 4 public static void main(String[] args) { 5 // 逻辑运算 6 //&& || ! 7 //与(and) 或(or) 非(取反) 8 boolean a = false; 9 boolean b = true; 10 System.out.println(a&&b); 11 // && 只有a和b一样是真的时候才会为真 否则为假 12 System.out.println(a||b); 13 // || a和b有一样是真的时候就为真 14 System.out.println(!(a&&b)); 15 //如果是真,则返回假;如果是假,则返回真 16 17 /* 18 短路运算 19 可以用现实的电路短路理解 20 例 10行代码 System.out.println(a&&b); 21 a的值是false 在(a&&b) 算到a是false的时候 后面的代码就不会再继续运行 22 下面用实例证明 23 */ 24 int num = 5; 25 System.out.println(num<4&&num++>4); 26 System.out.println(num); 27 //可以看到 后面的num++没有执行 28 29 /* 30 位运算 31 多用于和二级制打交道 32 A = 0011 1100 33 B = 0000 1101 34 35 A&B = 0000 1100 只有两个对位的数一样时才会得到1 36 A|B = 0011 1101 两个对位的数有一个为1的时候会得到1 37 A^B = 0011 0001 两个对位相同的时候为0,不同的时候为1 38 ~B = 1111 0010 取反 39 */ 40 41 //左移 右移 42 /* 43 0000 0000 0 44 0000 0001 1 45 0000 0010 2 46 0000 0011 3 47 0000 0100 4 48 0000 1000 8 49 0001 0000 16 50 */ 51 System.out.println(2<<3);//值为16 在二进制往前移动3位 52 System.out.println(8>>2);//值为2 在二进制往后移动2位 53 //面试题 2*8怎么算最快 就是此解 54 55 } 56 }