&(逻辑与) &&(短路与) |(逻辑或) ||(短路或)
- & && 的运算结果相同,当前边的数据为false时 && 运算不会继续执行后边的运算
- | || 的运算结果相同,当前边的数据为true时 || 运算不会继续执行后边的运算
- 练习题:(&和&&)
boolean x = true;
int y = 1;
if (x & (y++ == 2)){
System.out.println("结果为:" + y);
}else {
System.out.println("得到:" + y);
}
答案:得到:2
当x为真要判断y,y++先使用,所以判断(y++ == 2为假)if为false
boolean x = true;
int y = 1;
if(x && (y++ == 2){
System.out.println("结果为:"+y);
}else {
System.out.println("得到"+y);
}
答案:得到:2
当前一个表达式判断为true&&与&一样
Boolean x = false;
int y = 1;
if(x & (y++ == 2){
System.out.println("结果为:"+y);
}else {
System.out.println("得到"+y);
}
答案:得到:2
当前一个表达式判断为false时,&会继续进行下一个表达式判断,所以y++运行了
Boolean x = false;
int y = 1;
if(x && (y++ == 2){
System.out.println("结果为:"+y);
}else {
System.out.println("得到"+y);
}
答案:得到:1
&&当前一个判断为false时,就不会继续执行下一个表达式,所以y++没有被执行
- 练习题:(|与||)
Boolean x = false;
int y = 1;
if (x |(y++ == 2)){
System.out.println("结果为:" + y);
}else {
System.out.println("得到:" + y);
}
答案:得到:2
因为x为false所以执行y++ == 2
Boolean x = false;
int y = 1;
if (x ||(y++ == 2)){
System.out.println("结果为:" + y);
}else {
System.out.println("得到:" + y);
}
答案:得到:2
当第一个表达式为false时,||用法与|相同
Boolean x = true;
int y = 1;
if (x |(y++ == 2)){
System.out.println("结果为:" + y);
}else {
System.out.println("得到:" + y);
}
答案:结果为:2
当x判断为true,|会继续执行下一个表达式
Boolean x = true;
int y = 1;
if (x ||(y++ == 2)){
System.out.println("结果为:" + y);
}else {
System.out.println("得到:" + y);
}}
答案:结果为:1
当x判断为true,||会继续执行下一个表达式