A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 皮卫凯 中级黑马   /  2012-9-18 17:50  /  2096 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 皮卫凯 于 2012-9-18 20:08 编辑

public class Test {
        static boolean isTrue() {
                System.out.println("isTrue");
                return true;
        }

        static boolean isFalse() {
                System.out.println("isFalse");
                return false;
        }

        public static void main(String[] args) {
                if (isTrue() || isFalse()) {
                        System.out.println(" || operate return true");
                }
                if (isFalse() & isTrue()) {
                        System.out.println(" & operate return true");
                }
        }
}



请大家看看我理解的对不对。

isTrue()  和 isFalse() 这两个方法返回类型是布尔型
isTrue()返回的是true
isFalse()返回的是False

1、 if (isTrue() || isFalse())  左边是真,右边则不判断,执行下面语句。
2、 if (isFalse() & isTrue())   左边为假,右边也不判断,执行下面语句。

纠正  
2、 if (isFalse() & isTrue())   左边为假,右边也要判断,整个来说为假,所以不执行下面的语句。

7 个回复

倒序浏览
嗯 是这样的
回复 使用道具 举报
1、 if (isTrue() || isFalse())  左边是真,右边则不判断,执行下面语句。
2、 if (isFalse() & isTrue())   左边为假,右边也不判断,执行下面语句。

第一句对
第二句不对,左边为假,右边不判断,不执行下面语句,直接跳出判断!
回复 使用道具 举报
郭阳 发表于 2012-9-18 18:02
1、 if (isTrue() || isFalse())  左边是真,右边则不判断,执行下面语句。
2、 if (isFalse() & isTrue()) ...

对对 谢谢。真的糊涂了。。
回复 使用道具 举报
不太正确哦, 这就是&&、||同&、|的问题,&&和||都是短路式,&&在左边为false时,则不判断右边,||在左边为true时则不判断右边,而&和|不管左边返回什么,都会继续判断右边,再一并返回!
回复 使用道具 举报
上楼真理!&&和||短路式,&&左边false,就不判断右边值为false;||左边true,就不判断右边值为true。
&和|两头都要考虑,左右都执行,所以一般用&&和||比较好。
回复 使用道具 举报
这一题考得是& 、|、短路与和短路或的知识点:
&和| :无论第一个条件ture或者是false,都会对第二个条件进行判断;
短路&&:如果第一个条件为ture的话,就会对第二个条件进行判断;如果第一个条件为false的话,就不会对第二个条件进行判断,从而提高程序的效率。
短路||:如果第一个条件为ture的话,就不会对第二个条件进行判断;如果第一个条件为false的话,就会继续对第二个条件进行判断。
楼主可以回去看看毕老师视频的该部分...加强记忆...呵呵!
回复 使用道具 举报
回答这个给技术分吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马