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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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");
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

1 个回复

正序浏览
吉许 黑马帝 2011-10-18 09:28:57
楼主
结果为:
isTrue
|| operate return true
isFalse
isTrue
你这题要考虑到if语句中调用对象方法,和逻辑运算符的短路和非短路情况.
&&和||是短路逻辑运算符.&和|是非短路逻辑运算符
短路与运算符&&是 要求左右两个表达式都为true时结果才返回true,如果第一个表达式为false时后面的都不会判断了立刻返回false.
短路或运算符||为左右两个表达式有一个为true时就返回true,如果第一个表达式就为true 了它立刻返回true,不会在去判断第二个表达式.
而&和|是做为非短路逻辑运算符,是在两个表达式都计算判断后它才会返回最终的结果.
用短路逻辑运算符可以稍提高效率.
知识点明确了最终的结果一目了然.

评分

参与人数 1技术分 +2 收起 理由
宁超 + 2 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马