假设程序中需实现一个公用的方法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作为一种强大的后端编程语言,经常被用来处理各种类型的数据,包括从Excel文件中提取数据。本篇将深入探讨如何利用Java读取Excel文件内容,并自动根据这些内容在MySQL数据库中创建相应的表。 首先,我们需要...
此外,在赋值时自动拆箱也可能引发空指针,例如基本类型和包装类型的赋值时自动拆箱。为了避免这种情况,可以使用基本类型优于包装器类型,优先考虑使用基本类型,并对不确定的包装器类型进行校验。 二、使用...
【QTP 自动化测试技术领航】 QTP(QuickTest Professional)是一款功能强大的自动化测试工具,主要用于软件功能测试和回归测试。本章节的核心内容聚焦于QTP的基础操作,特别是录制与回放功能,这是自动化测试的基础...
JAVA判断空值方法原理解析 在 Java 编程语言中,判断空值是一个常见的操作,特别是在字符串处理中。Java 提供了多种方法来判断字符串是否为空,但这些方法的实现原理和效率却存在很大的差异。本文将深入探讨 Java ...
4. **处理空值和缺失元素**:某些XML元素可能不存在,或值为空,需要在Java类中进行适当的处理。 通过这个教程,你应该掌握了使用Java和XStream解析XML的基本步骤。实际应用中,可能还需要处理更复杂的XML结构,...
本篇文章将详细介绍如何在Java中去除JSON数据中的`null`空值。 1. **Jackson库的解决方案** Jackson是Java中广泛使用的JSON处理库,它提供了丰富的功能,包括序列化和反序列化。在处理`null`值时,Jackson提供了一...
- **JavaScript**:支持4种数据类型,包括数值型(number)、布尔型(boolean)、字符串型(string)和空值(null)。JavaScript是弱类型语言,变量声明使用`var`关键字,类型可以动态改变。 - **Java**:支持8种...
- **数组**:基本类型数组,如果定义后没有显式地赋初值,则Java会自动给它们赋值;对于引用类型数组,如果没有显式地赋初值,则所有元素默认为`null`。 #### 五、null的其他用途 1. **判断一个引用类型数据是否为...
为了解决这些问题,我们可以使用 ISNULL 函数将空值替换成一个默认值,从而避免空值对统计结果和外键约束的影响。同时,我们也可以使用其他函数,例如 COALESCE 函数和 CASE 函数,来处理空值。
本项目中,我们探讨的是一个自定义的日期控件,它具有扩展功能,支持空值,同时结合了下拉式树形控件的设计。这种控件的实现能够提供更灵活的用户交互体验,特别是在需要用户选择日期但又允许不输入的情况下。 首先...
在本篇教程中,将会介绍如何使用Python语言来处理CSV文件中的空值。CSV文件广泛应用于数据存储和交换,由于其结构简单和易于编辑,经常被用于各种数据分析和机器学习工作中。在实际使用过程中,由于各种原因,CSV...
通过以上步骤,我们不仅学会了如何在SuperMap Objects Java中设置栅格数据的空值,还掌握了计算栅格数据最小值的方法。这些技能对于进行GIS数据分析、数据清洗和地图制图等任务都是非常重要的。在实际应用中,我们...
资源介绍:。...本支持库安装后,将自动在易语言主菜单中添加一项工具菜单,[工具]-[JavaLib:Java类型签名查询]。这是一个查询“Java 类型签名(Type Signature)”的实用工具。易语言Javalib.fne支持库为
通过这种方式,即使某些字段为空,MyBatis 也能正确地将它们识别并转换成对应的 JDBC 类型,从而避免异常的发生。 #### 其他常见错误及其解决办法 除了上述情况外,还可能出现其他类型的错误,如 `Mapped...
空值的判断,空值的过滤,补全空值.ipynb
- **知识点概述**:Java提供了自动装箱和拆箱的功能,允许在基本类型和它们对应的包装类之间自动转换。 - **详细解释**:装箱是指将基本数据类型转换为对应的包装类的过程,例如`int`转为`Integer`。相反,拆箱则...
此外,Integer对象可以参与空值检查和自动装箱/拆箱操作。 4. **String与StringBuffer的区别** - **String**对象一旦创建,其内容就不能更改,每次修改都会创建新的对象,消耗资源。适用于字符串常量的存储。 - *...
然而,空值的引入需要在每个属性的数据类型D(A)基础上加入NULL,即数据类型变成D(A) U {NULL}。这样的改变,关系模式由原先的R(U)变成了R(U, F),其中U是属性名的集合,F是数据依赖关系的集合。这样一来,空值成为了...
理解这些转换对于在使用BalzeDs时处理数据交换至关重要,可以避免类型不匹配导致的错误,提高代码的稳定性和效率。在实际开发中,应根据具体需求选择合适的类型映射,确保数据在ActionScript和Java之间能够正确、...
${AnsiColor}: 用来设定字符的颜色 ${AnsiBackground}: 用来设定字符的背景色 ${application.version} 与MANIFEST.MF文件中相同的版本号(注意,自己打包的时候,如果配置文件中...————————————————