“ &&短路与 ” 和 “ & 逻辑与 ”
名称 | 语法 | 规则 |
---|---|---|
&&短路与 | 条件1&&条件2 | 两者为true,结果为true |
& 逻辑与 | 条件1 & 条件2 | 两者为true,结果为true |
- 主要区别
- &&短路与:如果条件1为false,则不会继续判断条件2,结果为false, 效率高
- & 逻辑与:无论条件1是否为false,都会继续判断条件2,结果为false,效率低
- “ &&短路与 ” 示例代码:
- 易错点:
++y : 先自增再比较
y++ : 先比较再自增
“ = ” 是赋值 , “==” 才是比较*
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 1;
int y = 2;
if(x < 0 && ++y < 10) //条件1:x < 0 为false,“&&短路与”不再往后判断
{
System.out.println("give the thumbs-up");//if(true),执行这条语句
}
System.out.println("x="+x+" "+"y="+y);//条件2 “++y < 10” 没有执行
}
}
运行结果:
- “ & 逻辑与 ” 示例代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 1;
int y = 2;
if(x < 0 & ++y < 10) //无论条件是否为false,“&&短路与”仍旧往后判断
{
System.out.println("give the thumbs-up");//if(true),执行这条语句
}
System.out.println("x="+x+" "+"y="+y);//条件2 “++y < 10” 得到执行
}
}
运行结果:
“ || 短路或 ” 和 “ | 逻辑或 ”
名称 | 语法 | 规则 |
---|---|---|
|| | 条件1 || 条件2 | 其中之一为true,结果为true |
| | 条件1 | 条件2 | 其中之一为true,结果为true |
- 主要区别
- “ || 短路或 ” :如果条件1为true,则不会继续判断条件2,结果为true, 效率高
- “ | 逻辑或 ”:无论条件1是否为true,都会继续判断条件2,结果为true,效率低
- “ || 短路或 ” 示例代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 1;
int y = 2;
if(x < 10 || ++y > 0) //条件1“ x < 10 ”为true,“||短路或”不再往后判断
{
System.out.println("give the thumbs-up");//if(true),执行这条语句
}
System.out.println("x="+x+" "+"y="+y);//条件2 “++y < 10” 没有执行
}
}
运行结果:
- “ || 短路或 ” 示例代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 1;
int y = 2;
if(x < 10 | ++y > 0) //无论条件1是否为true,“||短路或”仍旧往后判断
{
System.out.println("give the thumbs-up");//if(true),执行这条语句
}
System.out.println("x="+x+" "+"y="+y);//条件2 “++y < 10” 得到执行
}
}
运行结果: