`
cs_css
  • 浏览: 83963 次
  • 性别: 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读取excl文件内容进行mysql自动创建表

    Java作为一种强大的后端编程语言,经常被用来处理各种类型的数据,包括从Excel文件中提取数据。本篇将深入探讨如何利用Java读取Excel文件内容,并自动根据这些内容在MySQL数据库中创建相应的表。 首先,我们需要...

    java常用必坑指南大法

    此外,在赋值时自动拆箱也可能引发空指针,例如基本类型和包装类型的赋值时自动拆箱。为了避免这种情况,可以使用基本类型优于包装器类型,优先考虑使用基本类型,并对不确定的包装器类型进行校验。 二、使用...

    精通QTP——自动化测试技术领航

    【QTP 自动化测试技术领航】 QTP(QuickTest Professional)是一款功能强大的自动化测试工具,主要用于软件功能测试和回归测试。本章节的核心内容聚焦于QTP的基础操作,特别是录制与回放功能,这是自动化测试的基础...

    JAVA判断空值方法原理解析

    JAVA判断空值方法原理解析 在 Java 编程语言中,判断空值是一个常见的操作,特别是在字符串处理中。Java 提供了多种方法来判断字符串是否为空,但这些方法的实现原理和效率却存在很大的差异。本文将深入探讨 Java ...

    手把手教你通过java解析xml(csdn)————程序.pdf

    4. **处理空值和缺失元素**:某些XML元素可能不存在,或值为空,需要在Java类中进行适当的处理。 通过这个教程,你应该掌握了使用Java和XStream解析XML的基本步骤。实际应用中,可能还需要处理更复杂的XML结构,...

    深入Java关键字null

    - **数组**:基本类型数组,如果定义后没有显式地赋初值,则Java会自动给它们赋值;对于引用类型数组,如果没有显式地赋初值,则所有元素默认为`null`。 #### 五、null的其他用途 1. **判断一个引用类型数据是否为...

    探讨SQL Server数据库中空值处理技巧

    为了解决这些问题,我们可以使用 ISNULL 函数将空值替换成一个默认值,从而避免空值对统计结果和外键约束的影响。同时,我们也可以使用其他函数,例如 COALESCE 函数和 CASE 函数,来处理空值。

    python处理csv中的空值方法

    在本篇教程中,将会介绍如何使用Python语言来处理CSV文件中的空值。CSV文件广泛应用于数据存储和交换,由于其结构简单和易于编辑,经常被用于各种数据分析和机器学习工作中。在实际使用过程中,由于各种原因,CSV...

    c# 日期控件 扩展 空值

    本项目中,我们探讨的是一个自定义的日期控件,它具有扩展功能,支持空值,同时结合了下拉式树形控件的设计。这种控件的实现能够提供更灵活的用户交互体验,特别是在需要用户选择日期但又允许不输入的情况下。 首先...

    SuperMap Objects Java指定值设为栅格数据的空值

    通过以上步骤,我们不仅学会了如何在SuperMap Objects Java中设置栅格数据的空值,还掌握了计算栅格数据最小值的方法。这些技能对于进行GIS数据分析、数据清洗和地图制图等任务都是非常重要的。在实际应用中,我们...

    Java支持库2.0#0版

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

    mybatis 报空值异常

    通过这种方式,即使某些字段为空,MyBatis 也能正确地将它们识别并转换成对应的 JDBC 类型,从而避免异常的发生。 #### 其他常见错误及其解决办法 除了上述情况外,还可能出现其他类型的错误,如 `Mapped...

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

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

    125条常见的java面试笔试题大汇总

    - **知识点概述**:Java提供了自动装箱和拆箱的功能,允许在基本类型和它们对应的包装类之间自动转换。 - **详细解释**:装箱是指将基本数据类型转换为对应的包装类的过程,例如`int`转为`Integer`。相反,拆箱则...

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

    本篇文章将详细介绍如何在Java中去除JSON数据中的`null`空值。 1. **Jackson库的解决方案** Jackson是Java中广泛使用的JSON处理库,它提供了丰富的功能,包括序列化和反序列化。在处理`null`值时,Jackson提供了一...

    面试大连花旗的Java面试题必看.docx

    此外,Integer对象可以参与空值检查和自动装箱/拆箱操作。 4. **String与StringBuffer的区别** - **String**对象一旦创建,其内容就不能更改,每次修改都会创建新的对象,消耗资源。适用于字符串常量的存储。 - *...

    balzeDs与java数据类型 对照表

    理解这些转换对于在使用BalzeDs时处理数据交换至关重要,可以避免类型不匹配导致的错误,提高代码的稳定性和效率。在实际开发中,应根据具体需求选择合适的类型映射,确保数据在ActionScript和Java之间能够正确、...

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

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

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

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

Global site tag (gtag.js) - Google Analytics