1.1. 逻辑与的运算符功能
1.1.1. 测试&&
public static void main(String[] args) { int x=5; if (x==6 && saySpringok()) { } } private static boolean saySpringok() { System.out.println("saySpringok"); return false; }
没有输出:因为用的&& 第一个不满足条件则不在判断后面的条件。
修改代码如下:
public static void main(String[] args) { int x=5; if (x==5 && saySpringok()) { } } private static boolean saySpringok() { System.out.println("saySpringok"); return false; }
输出saySpringok
1.1.2. 测试&
public static void main(String[] args) { int x=5; if (x==3 & saySpringok()) { } } private static boolean saySpringok() { System.out.println("saySpringok"); return false; }
输出saySpringok
修改第一个表达式为true测试如下:
public static void main(String[] args) { int x=5; if (x==5 & saySpringok()) { } } private static boolean saySpringok() { System.out.println("saySpringok"); return false; }
输出saySpringok
1.1.3. 总结
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
区别:
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式以及后面的表达式。(如果遇到true就一直向下判断条件直到遇到false的表达式返回)
&不具有短路的功能,逻辑运算表达式条件都会执行。
1.2. 位运算符
&&不支持位运算符 &支持位运算。
两个运算的操作数位都为1,结果为1,不然结果为0,例如下面的程序段。
// 101 int a=5; //111 int b=7; //101 是5 结果是5 System.out.println(a&b); //100 int c=4; //100 结果是4 System.out.println(a&c);
1.2.1. 总结
0x0f 15 二进制 1111
我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。