&与&&的异同
相同点:
1:&与&&都可做逻辑运算符,表示逻辑与(and),当两边表达式结果都为true时,返回true,否则返回false。
不同点:
1:&如果左边表达式返回false,依然继续执行右边表达式;
&&如果左边表达式返回false,则返回false,不继续执行右边表达式,推荐用&&。
如果取反,&和&&两边表达式都执行。
2:&做位运算 按位与
public static boolean getTrue(String flag){
System.out.println("execute:" + flag + true);
return true;
}
public static boolean getFalse(String flag){
System.out.println("execute:" + flag + false);
return false;
}
//&如果左边表达式返回false,依然继续执行右边表达式.
if(getFalse("&") & getTrue("&")){
}else {
System.out.println("1");
}
//&&如果左边表达式返回false,则返回false,不继续执行右边表达式,
if(getFalse("&&") && getTrue("&&")){
}else {
System.out.println("2");
}
//如果取反,&和&&两边表达式都执行
if(!getFalse("!&") & getTrue("!&")){
System.out.println("3");
}
if(!getFalse("!&&") && getTrue("!&&")){
System.out.println("4");
}
/**
* 用整数x&1表达式判断整数的奇偶性,
* 二进制的末位为0表示偶数,最末位为1表示奇数
*/
int i = 8 & 1;
System.out.println("i=" + i);
int j = 9 & 1;
System.out.println("j=" + j);
}
运行结果
execute:&false
execute:&true
1
execute:&&false
2
execute:!&false
execute:!&true
3
execute:!&&false
execute:!&&true
4
i=0
j=1