Java 基本类型与包装类应用过程中出现的问题
2018-01-28 22:12
211 查看
很明显,下面这段代码会出现NullPointerException!报错的位置应该在被调用方法的第一行;但是实际情况是在红色行;
public static void main(String[] args) {
Person person = new Person();
multiply(person.getWeight(),100);
}
public static double multiply(double multiplicand, double multiplier) {
BigDecimal n1 = BigDecimal.valueOf(multiplicand);
BigDecimal n2 = BigDecimal.valueOf(multiplier);
BigDecimal value = n1.multiply(n2);
return value.doubleValue();
} 一般空指针产生原因都是 object.method(); object==null;
红色行出现空指针异常第一想法应该是person为null,但是看代码person不可能为null;
查看调用方法发现方法传参为double基本类型,而null并不是基本类型,正常来讲如果传参直接为null是调用不到那个方法的,但是编译时不能知道传入参数的实际值,因此编译通过了;
但是在运行的过程中检查出来了,参数根本就不能传进方法中,因此错误报在了外面红色行;不过报空指针还是有点措手不及;
建议方法的参数定义时采用包装类型,这样异常栈会准确一点,便于排查问题;虽然NullPointerException
很明显说明了问题的根本原因,但是在排查具体哪里原因时,确实花费了很多时间,由于线上故障无法debug,光看代码真的没发现哪里会出现NullPointerException,直到debug时发现没有进入到被调用方法里面的断点才确定问题所在;
public static void main(String[] args) {
Person person = new Person();
multiply(person.getWeight(),100);
}
public static double multiply(double multiplicand, double multiplier) {
BigDecimal n1 = BigDecimal.valueOf(multiplicand);
BigDecimal n2 = BigDecimal.valueOf(multiplier);
BigDecimal value = n1.multiply(n2);
return value.doubleValue();
} 一般空指针产生原因都是 object.method(); object==null;
红色行出现空指针异常第一想法应该是person为null,但是看代码person不可能为null;
查看调用方法发现方法传参为double基本类型,而null并不是基本类型,正常来讲如果传参直接为null是调用不到那个方法的,但是编译时不能知道传入参数的实际值,因此编译通过了;
但是在运行的过程中检查出来了,参数根本就不能传进方法中,因此错误报在了外面红色行;不过报空指针还是有点措手不及;
建议方法的参数定义时采用包装类型,这样异常栈会准确一点,便于排查问题;虽然NullPointerException
很明显说明了问题的根本原因,但是在排查具体哪里原因时,确实花费了很多时间,由于线上故障无法debug,光看代码真的没发现哪里会出现NullPointerException,直到debug时发现没有进入到被调用方法里面的断点才确定问题所在;
相关文章推荐
- java 基本类型与包装类的==和equels问题
- 黑马程序员——Java基础——String类、StringBuffer类、StringBuilder类、基本数据类型对象包装类操作、正则表达式应用
- 黑马程序员_Java基础_泛型应用 和 基本数据类型对象包装类
- Java基础:第五讲 开发Java应用的基本过程
- java之基本类型问题知识点
- java基础之基本类型与包装类
- 两个有趣的关于java里基本类型转换的问题
- Java开发过程中经常碰到数据类型的问题
- 将java的集合转换为数据库集合类型 解决weblogic调用存储过程的时候,返回值乱码问题
- JAVA 基本数据类型对象包装类
- My_Java之笔记(2)-基本数据类型对象包装类
- JAVA 基本数据类型对象包装类新特性
- java学习笔记(二) ----基本数据类型应用
- Java基本类型包装类
- Java第一课 Java的一些基本概念,Java的起源、为什么我们要学习Java语言,Java跨平台原理剖析;Java环境变量的配置,初学者常犯的问题,Java语言的基本数据类型和Java的语句。
- java基本类型和封装类型区别及应用
- Java开发过程中经常碰到数据类型的问题
- Java基本类型与包装类
- 越深入java 就觉得java做得越烂,java设计问题 之 :关于1.5,1.6 java处理基本对象类型cache的问题
- java学习-JAVA基本排序法示例,JAVA数据类型转换 ,ArrayList用法,Calendar 简单应用