java 小题

[复制链接]
查看11 | 回复3 | 2009-6-30 13:21:55 | 显示全部楼层 |阅读模式
class C {
public static void main(String[] args) {
int i = 1;
boolean b = false;
if(b && ++i == 2) {
System.out.print(“first ” + i);
} else {
System.out.print(“second ” + i);
}
}
}
打印结果为什么是 second 1
if那句里不已经++i了吗?用得还是&&

回复

使用道具 举报

千问 | 2009-6-30 13:21:55 | 显示全部楼层
这里主要是"&&"的问题."&&"和"&"是不同的."&&"的时候,如果左边为false的话,那么右边就不执行了;如果左边为true那么右边还是会执行的."&"的时候,不管你左边为true还是false,右边都会执行.在你的代码当中是"&&"而且左边b为false,所以右边不执行(++i==2不执行),直接跳到} else {System.out.print(“second ” + i);}中,此时i还是原来的1....
回复

使用道具 举报

千问 | 2009-6-30 13:21:55 | 显示全部楼层
呵呵,我给你讲讲与&&和或||的关系,你就明白了 java中明确规定: 与&&,当&&两边的变量或者表达式,如果前面一个是假的话,后面的肯定不会执行,如果前面一个是真的话,后面的肯定会执行。 或||,当签名一个为真的时候,后面的就不用执行,前面一个为假的时候,才会执行后面的一个。我想,我这里的真假,不用再给你解释是什么意思了吧。...
回复

使用道具 举报

千问 | 2009-6-30 13:21:55 | 显示全部楼层
B是FALSE && 是截断的 当有一个FALSE 往后就不做判断了! 好好看看JAVA基础...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行