`
cs_css
  • 浏览: 83065 次
  • 性别: 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支持库为

    实验七SQL的空值和空集处理.doc

    在创建表时,需要考虑空值的存在,避免空值的出现对查询结果的影响。 NULL 值和空集是 SQL 语言中两个特殊的概念,它们对数据库查询操作的影响非常大。只有通过实验和实践,我们才能更好地理解和处理空值和空集。

    SQL Server中的空值问题.pdf

    SQL Server 中的空值问题 SQL Server 中的空值问题是一个非常重要且复杂的主题。 空值的存在可以导致数据处理和查询结果的不确定性。因此,了解空值的语义、关系模型和三值逻辑在 SQL Server 中的应用非常重要。 ...

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

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

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

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

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

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

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

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

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

    SQL的空值问题.pdf

    SQL中的空值问题 SQL语言是绝大多数的商品型数据库基本采用的主查询语言,它的空值问题及其所带来的数据完整性问题越来越重要,应该引起数据库使用者和程序设计人员的足够重视。本文旨在参照SQL的ANSI/ISO标准,...

Global site tag (gtag.js) - Google Analytics