短路是确定结果后立即停止对表达式求值的地方。因此,例如:

if (a == b || c == d || e == f) {

// Do something

}

如果a == b为true,则c == d并且e == f根本不会进行评估,因为表达式的结果已经确定。如果a == b为假,c == d则被评估;如果是真的,则e == f永远不会进行评估。这似乎没有什么区别,但请考虑:

if (foo() || bar() || baz()) {

// Do something

}

如果foo()返回true,那么bar与baz被从来没有所谓,因为表达式的结果已经确定。所以,如果bar还是baz已经不仅仅是返回的东西(一个其他一些效果副作用),这些影响不会发生。

短路的一个很好的例子与对象引用有关:

if (a != null && a.getFoo() != 42) {

// Do something

}

a.getFoo()通常会抛出一个NullPointerException如果a是null,但由于表达短路,如果a != null是false,该a.getFoo()部分不会发生,所以我们没有得到一个异常。

请注意,并非所有表达式都是短路的。的||和&&运营商都短路,但|并&不是,也不是*或/; 实际上大多数操作员都不是。

java 表达式短路_什么是短路?在Java中进行编程时如何使用短路?相关推荐

  1. java表达式1 29的计算结果是,java表达式陷阱 - Funcy1122的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.赋值运算 1.1 表达式直接赋值 int a = 1; a = 2; System.out.println(a); 1.2 同一表达式多个赋值 int a = 10; int b = a+(a=5 ...

  2. java编码技巧_编码小技巧 让java编程更便捷

    经过一段时间的编码,程序员们或多或少会形成自己的编码习惯,好的习惯能帮助自己写出更好的代码,方便程序的维护.抱着侥幸心理,对"可能会出错"的代码没有做"防错性程序设计&q ...

  3. java 故障排查_目前最全的 Java 服务问题排查套路

    问题分类: CPU问题 内存问题(GC问题.内存泄漏. OOM,Coredump 等) I/O问题 问题排查工具箱: 系统级别的工具: top:查看系统/进程cpu.内存.swap等资源占用情况的必备 ...

  4. eclipse写java实现端口_使用eclipse(windows)在java中使用IPv6地址和端口号创建套接字...

    当我尝试使用IPv4地址创建套接字时,它很成功,但是当我尝试使用IPv6地址和端口号创建套接字时,它会引发异常: java.net.SocketException: Network is unreac ...

  5. java lock 效率_工作常用4种Java线程锁的特点,性能比较、使用场景

    多线程的缘由 在出现了进程之后,操作系统的性能得到了大大的提升.虽然进程的出现解决了操作系统的并发问题,但是人们仍然不满足,人们逐渐对实时性有了要求. 使用多线程的理由之一是和进程相比,它是一种非常花 ...

  6. java布道师_初探第10代Java帝国:11位Java专家道出了他们最喜欢的功能

    Java 10发布后.我们第一时间与11位Java专家讨论了一波.顺便深入挖掘了他们在Java 10中最喜欢的功能和对未发布的JDK11版本的一些看法. " Java 10对Java 9来说 ...

  7. java 数据对_数据表与简单java类(一对多)

    emp表:empno,ename,job,sal,comm,mgr,deptno dept表:deptno,dname,loc 要求可以通过程序描述出如下对应关系 一个部门有多个部员,并且可以输出一个 ...

  8. java异常处理框架_深入探索 高效的Java异常处理框架(1)

    摘要:本文从Java异常最基本的概念.语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框架,阐述了异常处理的基本原则.并且作者提出了自己处理一个大型应用 ...

  9. java 判断进程状态_获取远程服务器上 Java 进程的运行状态

    为了安全考虑, 有些服务器会被限制登录. 本文介绍如何获取远程服务器上 Java 进程的运行状态. 启动 jstatd 服务 在服务器端启动 jstatd 服务后, 远程的机器可以通过 rmi 协议获 ...

最新文章

  1. LigerUI——天外飞仙
  2. 3.菜鸟教你一步一步开发 web service 之 axis 服务端创建
  3. getrlimit读取进程能打开的最大文件描述符
  4. SAP SMW0 上传EXCEL模板遇到的问题
  5. 编程实现表1(L的输入-输出模式分布),证实表1的正确性
  6. set 数据类型的应用场景
  7. Python精通-Python集合操作详解
  8. 3198元起!魅族16s开启预约:4月28日全渠道首发
  9. ScrollView中嵌套recycleView 出现的不显示,显示不全,终极解决方案
  10. 【JSOI2007】【BZOJ1029】建筑抢修(贪心,堆)
  11. tomcat配置重定向_在Tomcat上配置SSL以及从HTTP到HTTPS的设置自动重定向的步骤
  12. 虚拟机体验NAS私人云全揭秘:深度揭秘虚拟机安装群晖DSM6.2/6.2.1/6.2.2/6.2.3系统洗白全过程(附赠洗白码)
  13. 索尼z3c d5833港版救砖强刷说明
  14. 线性约束最小方差准则
  15. 华为mate30怎么更换鸿蒙系统,怎么升级到鸿蒙2.0系统呀
  16. python爬虫:爬取全国航班信息
  17. FVCOM 环境基础配置(1) intel编译器 下载与安装
  18. VMWare安卓安卓系统虚拟机
  19. 程序员跳槽全攻略(路漫漫其修远兮)
  20. js如何截取某个字符串前面所有的字符串

热门文章

  1. 2. Matplotlib子图与多子图
  2. 一道google面试题--自然数e中出现的连续的第一个10个数字组成的质数
  3. 为什么你需要辞职了?——辞职的十大理由
  4. web单页面应用与多页面应用区别
  5. 地铁两站之间最短路径查询(python实现)
  6. HTML5.笔记.案例
  7. 多少牛逼的程序员毁在low逼的英文发音上(JAVA)
  8. C语言:模拟用户登录
  9. 机器学习之乳腺癌预测
  10. VC和VS的区别--通俗易懂