黑马程序员技术交流社区

标题: 一道小面试题,弄晕了。。。。 [打印本页]

作者: 皮卫凯    时间: 2012-9-18 17:50
标题: 一道小面试题,弄晕了。。。。
本帖最后由 皮卫凯 于 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())   左边为假,右边也要判断,整个来说为假,所以不执行下面的语句。
作者: 王玉岩    时间: 2012-9-18 17:51
嗯 是这样的
作者: 郭阳    时间: 2012-9-18 18:02
1、 if (isTrue() || isFalse())  左边是真,右边则不判断,执行下面语句。
2、 if (isFalse() & isTrue())   左边为假,右边也不判断,执行下面语句。

第一句对
第二句不对,左边为假,右边不判断,不执行下面语句,直接跳出判断!
作者: 皮卫凯    时间: 2012-9-18 18:11
郭阳 发表于 2012-9-18 18:02
1、 if (isTrue() || isFalse())  左边是真,右边则不判断,执行下面语句。
2、 if (isFalse() & isTrue()) ...

对对 谢谢。真的糊涂了。。
作者: 田建    时间: 2012-9-18 18:40
不太正确哦, 这就是&&、||同&、|的问题,&&和||都是短路式,&&在左边为false时,则不判断右边,||在左边为true时则不判断右边,而&和|不管左边返回什么,都会继续判断右边,再一并返回!
作者: 严海荣    时间: 2012-9-18 18:57
上楼真理!&&和||短路式,&&左边false,就不判断右边值为false;||左边true,就不判断右边值为true。
&和|两头都要考虑,左右都执行,所以一般用&&和||比较好。
作者: 彭旭文    时间: 2012-9-19 11:21
这一题考得是& 、|、短路与和短路或的知识点:
&和| :无论第一个条件ture或者是false,都会对第二个条件进行判断;
短路&&:如果第一个条件为ture的话,就会对第二个条件进行判断;如果第一个条件为false的话,就不会对第二个条件进行判断,从而提高程序的效率。
短路||:如果第一个条件为ture的话,就不会对第二个条件进行判断;如果第一个条件为false的话,就会继续对第二个条件进行判断。
楼主可以回去看看毕老师视频的该部分...加强记忆...呵呵!
作者: 班志国    时间: 2012-9-19 16:06
回答这个给技术分吗




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2