指针异常,

声明引用变量(即对象)时,实际上是在创建指向对象的指针。考虑以下代码,您可以在其中声明基本类型的变量int:

int x;
x = 10;
在此示例中,变量x是a int,Java将为您初始化它0。当您10为第二行分配值时,您的值将10被写入由引用的内存位置x。

但是,当您尝试声明引用类型时,会发生不同的事情。请使用以下代码:

Integer num;
num = new Integer(10);

第一行声明了一个名为的变量num,但它实际上并不包含原始值。
相反,它包含一个指针(因为类型Integer是一个引用类型)。既然你还没有说明要指出什么,Java就把它设置为了null,这就意味着“ 我指的是什么 ”。

在第二行中,new关键字用于实例化(或创建)类型的对象,Integer并将指针变量num分配给该Integer对象。

在NullPointerException当你声明一个变量,但没有创建对象时发生。所以你指的是实际上并不存在的东西。

如果您num在创建对象之前尝试取消引用,则会得到一个NullPointerException。在最琐碎的情况下,编译器将捕获问题并让您知道“ num may not have been initialized,”但有时您可能编写不直接创建对象的代码。

例如,您可能有如下方法:

public void doSomething(SomeObject obj) {
//do something to obj}
在这种情况下,您不是在创建对象obj,而是假设它是在doSomething()调用方法之前创建的。注意,可以像这样调用方法:

doSomething(null);
在哪种情况下,obj是null。如果该方法旨在对传入的对象执行某些操作,则抛出该方法是合适的,NullPointerException因为它是程序员错误,程序员将需要该信息用于调试目的。

或者,可能存在这样的情况:该方法的目的不仅仅是对传入的对象进行操作,因此可以接受空参数。在这种情况下,您需要检查null参数并采取不同的行为。您还应该在文档中解释这一点。例如,doSomething()可以写成:

参考链接:https://www.imooc.com/wenda/detail/555216

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值