黑马程序员技术交流社区

标题: 逻辑运算符的短路行为 呵呵,明白了 [打印本页]

作者: 何万县    时间: 2012-3-31 20:24
标题: 逻辑运算符的短路行为 呵呵,明白了
本帖最后由 何万县 于 2012-4-1 13:40 编辑

public class Test03 {
     public static void main(String[] args) {
         int m = 5, n = 5;
         if ((m != 5) && (n++ == 5)) {
         }
         System.out.println("a:" + n);
         m = n = 5;
         if ((m != 5) & (n++ == 6)) {
         }
         System.out.println("b:" + n);
         m = n = 5;
         if ((m == 5) || (n++ == 5)) {
         }
         System.out.println("c:" + n);
         m = n = 5;
         if ((m == 5) | (n++ == 6)) {
         }
         System.out.println("d:" + n);
     }
}[/code]
输出
a:5
b:6
c:5
d:6
对于&&来说若前一个表达式为false,则不会执行下一个表达式,所以n++没有运行。
对于||来说若前一个表达式为true,则不会执行下一个表达式,所以n++也没有运行。
这个就是短路行为

今天终于弄明白了
作者: 何万县    时间: 2012-4-1 07:45
我以为楼主问问题呢!原来是分享心得,短路嘛,联系实际生活也是这样的,到一个条件满足后直接把另一个条件跳过,也就相当于把另一个条件给短路了,不执行,提高的程序的效率。java里面的术语全部跟实际生活相关,本来赶紧起的名字很奇怪,后来发现名字真的很好,跟生活相关,像反射,内省,代理都是跟实际生活相关的。楼主慢慢体会!
作者: 张明星    时间: 2012-4-1 08:52
何万县 发表于 2012-4-1 07:45
我以为楼主问问题呢!原来是分享心得,短路嘛,联系实际生活也是这样的,到一个条件满足后直接把另一个条件 ...

兄弟,有没有发现楼主跟你很像?;P
作者: 吴玉辉    时间: 2012-4-1 13:39
是啊~真有喜感{:soso_e113:}
作者: 李井山    时间: 2012-4-1 17:03
其实是两个重名的
作者: zhouxp3323    时间: 2012-4-1 20:29
张明星 发表于 2012-4-1 08:52
兄弟,有没有发现楼主跟你很像?

看到最后一行,才发现楼主是来发表心得的,今天是愚人节,被骗了




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