逻辑运算符与位运算符
1.与(and)或(or)非(!-取反)
逻辑与运算:两个变量都为真,结果才为true.
逻辑非运算:两个变量中有一个为真,则结果才为true。
逻辑非运算:如果是真;则变为假;如果是假,则变为真。
boolean a = true; boolean b = false; System.out.println(a&&b);//逻辑与运算:两个变量都为真,结果才为true. System.out.println(a||b);//逻辑非运算:两个变量中有一个为真,则结果才为true。 System.out.println(!(a&&b));//逻辑非运算:如果是真;则变为假;如果是假,则变为真。
-
& 可以用作逻辑与的运算符,表示逻辑与(and)
-
当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false
-
无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断
-
-
&& 可以用作逻辑与的运算符,表示逻辑与(and)
-
当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false
-
第一个条件不成立,后面的条件均不进行判断,返回false
-
-
| 可以作逻辑或运算符,表示逻辑或(or)
-
当运算符有一边为true时,整个运算结果为true
-
无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断
-
-
|| 可以作逻辑或运算符,表示逻辑或(or)
-
当运算符有一边为true时,整个运算结果为true
-
第一个条件成立,后面的条件均不进行判断,返回true
-
此段转载自java 且_JAVA中逻辑运算符“|”和“&”与“||”和“&&”的用法_weixin_39542514的博客-CSDN博客
2. 短路运算
boolean a = true; boolean b = false; System.out.println(a&&b); System.out.println(a||b); System.out.println(!(a&&b)); //短路运算 int c = 100; boolean d =(99>c)&&(99>c++); //进行短路运算,后面(99>c++)未执行 System.out.println(d); //未执行,d为false System.out.println(c); //未执行c++,a为原赋值100 boolean f =(99>c)&(99>c++); System.out.println(f); //此时d为 System.out.println(c); //此时c的值为101 boolean g =(99>c)&&(99>c++);//短路运算进行,前面(99>c)错误,后面未执行c++,所以c的值不变。c=101 。 System.out.println(g);//false System.out.println(c);//101 boolean h =(99>c++)&&(99>c); System.out.println(h); System.out.println(c) boolean h =(99>c++)&&(99>c); System.out.println(h); //boolean判断 false System.out.println(c); //c的值为102,证明即使使用短路运算符,如果计算机识别到,任然会执行c++, 但是不执行后面的。
3.位运算符
位运算符:&,|,^,~。
A = 0011 1100 B = 0000 1101 A&B =0000 1100 A|B =0011 1101 A^B =0011 0001 ~B =1111 0010
A = 0011 1100 B = 0000 1101 位运算符:&,|,^,~。
A&B:对应位,如果两个都为1,才为1,否则为0。 0000 1100 A|B:对应位,如果两个都为0,才为0,否则为1。 0011 1101 A^B:如果对应位相同则为0,不同为1。 ~B:每位取反。1111 0010
5.左移右移<<,>>
2*8 2*2*2*2 效率极高 << *2 >> /2 二进制移位 1 0000 0001 左移后 2 0000 0010 继续左移 4 0000 0100 继续左移 8 0000 1000 System.out.println(2<<3); // 16