`
cs_css
  • 浏览: 82701 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

避免java包装类型空值——自动拆箱浅析

    博客分类:
  • java
阅读更多

    假设程序中需实现一个公用的方法f,用来统计一个整数list中所有值的和,思路很简单,如下:

     

public static int f(List<Integer> list){
  int count = 0;
   for(int i:list){
      count += I;
   }
   return count;
}    

 

方法写好后,我们在main方法中调用之,如下:

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(null);
System.out.println(f(list));

 

我们知道,jdk1.5之后的版本提供了自动装/拆箱功能。上述程序中,list添加了一个值null的元素,那么拆箱后,该值应该会自动变成0吧?

执行上述程序后会发现,不是这样的。

程序会报出空指针异常,这是为什么呢?

其实,如果了解jdk1.5以前的版本中包装类型拆箱的实现方法,答案不难得出,jdk1.5以前的版本,拆箱是这样做的:

int i=j.intValue();//手动拆箱操作

 

java提供了自动拆箱功能后,例如Integer a = 2这样的操作,在底层依然是调用 intValue()方法,所以在上述报错代码中,null值调用intValue()方法,自然会报出空指针异常。

所以一个简单的求和方法,如果涉及到包装类与基本类型之间的转换,也要做足判断,避免不必要的bug

分享到:
评论

相关推荐

    JAVA判断空值方法原理解析

    主要介绍了JAVA判断空值方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    解决上传图片时request.getParameter是空值的java类

    encType="multipart/form-data" 根据上传不同,主要分两步,可以有效的解决request.getParameter(String s)是null值

    空值的判断,空值的过滤,补全空值.ipynb

    空值的判断,空值的过滤,补全空值.ipynb

    Java支持库2.0#0版

    资源介绍:。...本支持库安装后,将自动在易语言主菜单中添加一项工具菜单,[工具]-[JavaLib:Java类型签名查询]。这是一个查询“Java 类型签名(Type Signature)”的实用工具。易语言Javalib.fne支持库为

    详解Java去除json数据中的null空值问题

    主要介绍了详解Java去除json数据中的null空值问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java-validator:一个用于在类级别检查null和空值的Java验证库

    这是一个帮助程序库,用于在类级别验证Java类成员的空值和空值。 它旨在减少样板代码,即,它通过使用多个条件语句来缩短检查类的单个成员的值的时间范围。 我们甚至可以在层次结构级别上检查对象,即成员对象的成员...

    java中的SpringBoot的字符画(banner.txt)

    ${AnsiColor}: 用来设定字符的颜色 ${AnsiBackground}: 用来设定字符的背景色 ${application.version} 与MANIFEST.MF文件中相同的版本号(注意,自己打包的时候,如果配置文件中...————————————————

    Java支持库2.0#0版(静态版)

    资源介绍:。易语言Javalib_static....本支持库安装后,将自动在易语言主菜单中添加一项工具菜单,[工具]-[JavaLib:Java类型签名查询]。这是一个查询“Java 类型签名(Type Signature)”的实用工具。易语言Javalib_

    MySQL数据库:空值比较.pptx

    MySQL有一个特殊的等于运算符“”,当两个表达式彼此相等或都等于空值时,它的值为TRUE,其中有一个空值或都是非空值但不相等,这个条件就是FALSE。 【例】 查询Sell表中还未收货的订单情况。 SELECT * FROM Sell ...

    深入Java关键字null

    深入Java关键字null

    mybatis 报空值异常

    mybatis 报空值异常及其解决办法

    oracle处理空值的方法

    oracle处理空值的方法

    8.python查看空值.zip

    8.python查看空值.zip8.python查看空值.zip8.python查看空值.zip8.python查看空值.zip8.python查看空值.zip8.python查看空值.zip8.python查看空值.zip8.python查看空值.zip8.python查看空值.zip8.python查看空值.zip...

    MATLAB用前值填充空值

    找出文档中的空值,并用前值填充空值,分为大跳(中间有连续空值),和小跳,中间只有一个空值

    matlab 空值预处理

    用matlab做的数据空值处理。其中包含了数值型的和字符型的数据类型。在代码中加入了详细的注释说明。有做数据分析的可以用此方法进行一些数据的预处理。

    dwc-services:围绕 DarwinCore 记录的 Web 服务

    记录上的常见修复——verbatimCoordinates 与 decimalLatitude/decimalLongitude——字段和键案例(DecimalLatitude 与 decimalLatitude)——空值和空值——发生 ID 生成,如果不存在,作为以下之一:--- id 字段 -...

    java程序员面试题

    Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而...

    SQL Server中的空值问题.pdf

    SQL Server中的空值问题.pdf

Global site tag (gtag.js) - Google Analytics