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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何万县 中级黑马   /  2012-3-31 20:24  /  1947 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何万县 于 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++也没有运行。
这个就是短路行为

今天终于弄明白了

5 个回复

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

兄弟,有没有发现楼主跟你很像?;P
回复 使用道具 举报
是啊~真有喜感{:soso_e113:}
回复 使用道具 举报
其实是两个重名的
回复 使用道具 举报
张明星 发表于 2012-4-1 08:52
兄弟,有没有发现楼主跟你很像?

看到最后一行,才发现楼主是来发表心得的,今天是愚人节,被骗了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马