这两个java程序为何运行结果不同,求java大神

第一个程序:classTest{publicstaticvoidmain(String[]args){inta=5,b=1;booleanc=(a<10)||(++b>=... 第一个程序: class Test{
public static void main(String[] args){
int a=5,b=1;
boolean c=(a<10)||(++b>=2);
System.out.println("b="+b+",c="+c);
}
} 运行结果是b=1,c=ture

第二个程序:
class Test{
public static void main(String[] args){
int a=5,b=1;
boolean c=(a<10)&&(++b>=2);
System.out.println("b="+b+",c="+c);
}
} 运行结果是b=2,c=ture

两个程序只有boolean那一行的 ||(双或)和&&(双与)有点区别,但运行结果就不同了
展开
 我来答
千湘落雨
2017-08-21 · TA获得超过762个赞
知道小有建树答主
回答量:176
采纳率:64%
帮助的人:41.5万
展开全部
首先你要明白“或”和“与”的区别,以及“|”和“||“,”&“ 和 ”&&“ 的区别。
双的家伙比单个的运行效率要高。||也成短路或,&&也成短路与。短路是物理学中的一种概念。再计算机中也是判断中断的意思。
比如:c=(a<10)||(++b>=2),如果c=(a<10)的条件成立,那么或这个概念已经成了,那么后面的(++b>=2)就不需要执行,这就是短路的概念。当然这里如果你用单|,那么就算前面的条件成立,后面的条件还是会执行。如果后面的操作是赋值操作,那么|和||的结果就完全不同。
同理&&,c=(a<10)&&(++b>=2),前面的条件不成立,那后面的条件就不会判断。因为后面的条件不会执行,所以效率就高。
你问的这个问题完全不需要有所疑问,因为 ||和&&的意思完全不同,执行的结果当然完全不同。 而如果你问的是 |和||,就是我上面说的单和双的区别,那么我还会高看你一眼。
百度网友6705c13
2017-08-21 · TA获得超过801个赞
知道小有建树答主
回答量:613
采纳率:83%
帮助的人:195万
展开全部
X || Y,当X成立时,就不用判断Y了,因此第一个程序的++b根本没有执行,最终输出b还是1。
但X && Y就不一样了,当X成立时,还要判断Y。
追问
再问一下:++b>=2是先判断b>=2还是先对b+1呢?如果是b++>=2呢?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式