java - 当我使用 int 时,NullpointerException 如何不抛出?

标签 java

<分区>

我有两个不同的程序,一个使用 int,另一个使用 Double。 对于下面的代码,我得到了 NullpointerException

public class Solution {

    Double cost;
    void addTax(Double b)
    {
        cost+=b;
    }

    public static void main(String[] args)
    {
        new Solution().addTax(30.00);
    }
}

但对于以下使用 int 的代码,不会出现任何运行时错误。

public class Solution {

    int cost;

    void addTax(int b)
    {
        cost+=b;
    }

    public static void main(String[] args)
    {
        new Solution().addTax(30);
    }
}

那怎么可能呢?请解释一下。

最佳答案

基元(例如int)获得默认值0,而引用类型(例如Double)获得默认值null 的值。

因此 cost+=b; 在第一个代码片段中抛出一个 NullPointerException(因为它等同于 cost = cost.doubleValue() + b;),而在第二个代码片段中,它等效于 cost = 0 + b;,这很好。

关于java - 当我使用 int 时,NullpointerException 如何不抛出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32969668/

相关文章:

java - 为什么EJB服务器和客户端在同一事务中看到对方的数据库更改?

java - 提示 Yosemite 上的 Java 版本过时但安装了 Java 1.8 的想法

java - 在谷歌地图 Android 上显示当前位置

java - Jersey 的依赖注入(inject)

java - Spring 4/Spring 社交 - PageNotFound - 在 DispatcherServlet 中未找到带有 URI 的 HTTP 请求的映射

java - Android库项目清理重建有问题

java - Hibernate:通过继承类的属性查询对象

java - 使用堆栈的回文类的问题

java - Spring缓存不能与EHCache+JCache一起使用

java - 按属性对自定义对象的 ArrayList 进行排序