解读:

逻辑与(&&):如果左操作数结果为true,则继续计算右操作数;如果左操作数结果为false,则对右操作数的运算已经没有必要,直接返回结果false,忽略右操作运算。 
逻辑或(||):如果左操作数结果为false,则继续计算右操作数;如果左操作数结果为true,则对右操作数的运算已经没有必要,直接返回结果true,忽略右操作运算。 
逻辑与(&)、逻辑或(|):不管左操作数的运算结果如何,都一律计算右边的操作数。
¨案例:

SysDataSet sds = con.csCommonSP("P_GETFILE"); 
SysRecord sr = sds != null ? sds.getParamSet() : null; 
rs = (sr != null & sr.getInt(0) == 0) ? sds.getResultSet() : null;

上面的代码有可能会造成空指针错误,代码中使用的是非短路与(&),也就是不管左边的sr != null的结果如何,都一律运算右边的sr.getInt(0) == 0,那如果遇到sr为null值的情况,则一样也会调用到sr.getInt(0),显然就会出现空指针异常。解决这个问题的最好选择是改用短路运算与(&&),如下面代码段所示。 
SysDataSet sds = con.csCommonSP("P_GETFILE"); 
SysRecord sr = sds != null ? sds.getParamSet() : null; 
rs = (sr != null && sr.getInt(0) == 0) ? sds.getResultSet() : null;

推荐书籍:零基础学Java(第2版)(含光盘)

转载于:https://blog.51cto.com/wadejames/578668

Java软件低级错误:短路运算和非短路运算的区别相关推荐

  1. 解释一下java的短路运算,Java短路运算符和非短路运算符详解

    Java短路运算符和非短路运算符详解 时间:2017-09-15     来源:互联网 你了解Java短路运算符和非短路运算符吗?短路运算符就是我们常用的"&&". ...

  2. java 阻塞与非阻塞_简述JAVA同步、异步、阻塞和非阻塞之间的区别

    同步和异步,阻塞和非阻塞是大家经常会听到的概念,但是它们是从不同维度来描述一件事情,常常很容易混为一谈. 1. 同步和异步 同步和异步描述的是消息通信的机制. 同步 当一个request发送出去以后, ...

  3. 短路逻辑运算符和非短路逻辑运算符

    没想到毕业工作后还会有随堂测试[旺财],有题如下: 根据下面的代码: String s = null; 会抛出NullPointerException异常的有(). if( (s!=null) &am ...

  4. java 的 非短路_Java 短路运算符和非短路运算符

    短路运算符就是我们常用的"&&"."||",一般称为"条件操作". class Logic{ public ststic v ...

  5. java魔鬼数字指什么_Java软件低级错误(五):魔鬼数字

    ¨解读 在代码中使用魔鬼数字(没有具体含义的数字.字符串等)将会导致代码难以理解,应该将数字定义为名称有意义的常量. 将数字定义为常量的最终目的是为了使代码更容易理解,所以并不是只要将数字定义为常量就 ...

  6. Java |与|| 、与 ,或与非的使用和区别

    目录 前言 一."与"和"或"的定义区别 二.&.&& 使用和区别 三.|.||的使用和区别 前言 在平时的开发工作当中,经常会使用到i ...

  7. 面试题系列——1.科大讯飞java软件开发

    面试题系列--1.科大讯飞 java软件开发 面试官问题: 1.equal和的区别 a.比较两个基本数据类型时用,因为只有类才有eqaul方法 b.比较对象为引用数据类型时,都是比较的对象的地址.所以 ...

  8. 新java十大低级错误

    1       前言 为了规范大家的编程行为,借鉴前人的编程经验,避免低级错误的不断发生,特发布MDSP产品Java十大低级错误,供所有Java开发人员学习. 2       Java十大低级错误 1 ...

  9. Java编程10大低级错误

    今天面试时HR问我一个关于数据库性能调优的问题,对于我的回答引发了她的另一个问题:Java 10大低级错误 知不知道?这个在以前公司的时候还真的提过这个问题,但是我实在是...在网上搜了一下,拿来分享 ...

  10. java 职场厚黑学之一职场十大低级错误

    原文地址:http://down.51cto.com/data/1899748 如有侵犯,请告知,及时删除                                                ...

最新文章

  1. mac修改默认python版本_Anaconda/MacOS:更改默认python版本
  2. IOS学习动画二之 Core Animation (3)
  3. SQL(Oracle)日常使用与不常使用函数的汇总
  4. 你必须知道的23个最有用的Elasticseaerch检索技巧
  5. caffe 中的超参
  6. 软件工程导论复习知识点
  7. 安航云酒店管理系统面试话术
  8. 重装电脑系统前,如何设置BIOS ?
  9. 自然语言处理 情绪识别
  10. 网站403错误解决方案
  11. Word学习笔记:P5-标尺和定位点要如何使用
  12. 网页万能命令[wn.run/]
  13. 【小样本实体识别】Few-NERD——基于N-way K-shot的实体识别数据集和方法介绍
  14. 登录psn 服务器无响应,链接psn服务器超时
  15. php用户抽奖次数怎么做,获取用户剩余抽奖次数
  16. Windows Linux 实用技巧
  17. Wince Linux 屏幕校准
  18. 【安卓逆向】护眼软件去广告教程(简单详细)软件名护眼宝
  19. 数据结构实验1单链表
  20. 深入c语言pdf,深入体验C语言项目开发1.pdf

热门文章

  1. JMX系列之JmxMBeanServer
  2. webgl 包围盒子
  3. (01背包 排序+特判)饭卡(hdu 2546)
  4. Oracle笔记(九) 表的创建及管理
  5. AjaxControlToolKit(整理)三.......(35个控件)简单介绍
  6. Windows窗体编程基础学习:更改TabControl 的外观(如qq用的)
  7. glassfish 自定义 jaas realm
  8. nginx搭建高性能流媒体技术
  9. requestLayout invalidate postInvalidate
  10. Android ListView的背景和黑色边缘化的问题