资讯专栏INFORMATION COLUMN

Java Double NullPointerException

Hujiawei / 1008人阅读

摘要:问题描述重构计量项目后台,运行单元测试时,遇到了错误。是基本数据类型,默认值为为类类型,默认值为。运行单元测试,通过总结有时候,很多奇奇怪怪的问题,往往都有很简单的解释,只是我们一时没想到。

问题描述

重构计量项目后台,运行单元测试时,遇到了错误。

145行:

又没有在null上调方法,两个Double相乘,怎么会空指针呢?

尝试

打开IDEA新建一个普通的Java项目。

double
package com.mengyunzhi;

public class Main {

    double testDouble;

    private void test() {
        System.out.println(testDouble);
        double result = testDouble * 10;
    }

    public static void main(String[] args) {
        Main main = new Main();
        main.test();
    }
}

运行结果:

Double
package com.mengyunzhi;

public class Main {

    Double testDouble;

    private void test() {
        System.out.println(testDouble);
        Double result = testDouble * 10;
    }

    public static void main(String[] args) {
        Main main = new Main();
        main.test();
    }
}

运行结果:

分析

看了两个运行结果,大体应该就能分析出来原因了。

Doubledouble的包装类。double是基本数据类型,默认值为0.0Double为类类型,默认值为null

就像将Double对象赋值给基本类型double时,是不会报错的,因为有一层隐式调用,将Double转化为double

而我猜想这里的空指针应该也和这个有关系,对象是没法乘的,所以隐式调用转化为double,然后再运算。

因为没有初始化,所以Double对象默认是null,在null隐式调用方法,所以就空指针异常。

解决

实例化的时候维护上倍数。

运行单元测试,通过!

总结

有时候,很多奇奇怪怪的问题,往往都有很简单的解释,只是我们一时没想到。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71689.html

相关文章

  • java第三方包学习之lombok

    摘要:不久前发现有一个第三方库可以在一定程度上帮助我们从体力劳动中解救出来,它就是。来看自动生成的方法中对于数组采用的是。检查传入对象是否为,若为,则抛出异常。比如自动抛受检异常,而无需显式在方法上使用语句。 前言 Laziness is a virtue!每当写pojo类时,都会重复写一些setter/getter/toString方法等大量的模版代码,无聊繁琐却又不得不做,这会让这个类变...

    GitCafe 评论0 收藏0
  • 1、异常概述和继承体系 2、原因及处理方式 3、运行时异常 4、重写异常处理 5、Throwable

    摘要:案例演示该句运行时发生了数组索引越界异常,由于没有处理异常,导致程序无法继续执行,程序结束。用来进行某种异常的捕获,实现对捕获到的异常进行处理。运行时期异常一旦发生需要程序人员修改源代码。 01异常的概述 * A: 异常的概述 * a:什么是异常 * Java代码在运行时期发生的问题就是异常。 * b:异常类 * 在Java中,把异常信息...

    GT 评论0 收藏0
  • Java 中的类型、值和变量 之 基本类型

    摘要:在中存在两种类型基本类型和引用类型。值得注意的是,基本类型的值的状态不会被共享。浮点类型和它们的值中的浮点类型遵循标准的定义。布尔类型和它们的值类型表示两个逻辑量,和。 众所周知,Java是一门静态类型的语言,这意味着所有的变量和表达式的类型会在编译时确定。同时,Java 还是一门强类型的语言,因此变量的值或表达式的结果的类型都会受到限制(比如一个声明为 String 的变量不的值不可...

    beita 评论0 收藏0
  • lombok:推荐使用的编译时Getter/Setter等类似代码生成库

    摘要:每个用的孩子都应该了解下主要依赖编译时代码生成技术,帮你自动生成基于模板的常用的代码,譬如最常见的与。另一种是通过类似于这样基于注解的在运行时利用反射动态添加,不过这样的缺陷是会影响性能,并且有一定局限性。 Lombok 每个用Java的孩子都应该了解下Lombok Lombok主要依赖编译时代码生成技术,帮你自动生成基于模板的常用的Java代码,譬如最常见的Getter与Setter...

    dance 评论0 收藏0
  • Lombok介绍、使用方法和总结

    摘要:使用方法能以简单的注解形式来简化代码,提高开发人员的开发效率。能通过注解的方式,在编译时自动为属性生成构造器方法。出现的神奇就是在源码中没有和方法,但是在编译生成的字节码文件中有和方法。没法实现多种参数构造器的重载。 1 Lombok背景介绍 官方介绍如下: Project Lombok makes java a spicier language by addi...

    30e8336b8229 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<