Java运行报NPE错误_[java]测试中常常出现的NullPointerException-NPE是怎么回事?

在测试时,查看log的时候,有时候会看到NullPointerException-NPE的错误,大名鼎鼎的空指针!

之前一直都不知道咋回事;记录下;

首先先来了解在java中,什么是null呢?

如果创建一个引用的数组,但是不赋值的话,输出是null;说明引用也有缺省值 --null

1.null是引用类型的缺省值

2.null代表空,不存在,可以读作空

3.引用类型的数组创建出来,初始值都是空

用java代码举个例子!

1.创建一个Mercandise类;

public class Mercandise {

String name;

String id;

int count;

double price;

}

2.创建一个测试类

public class CheckBeforeUse {

public static void main(String[] args) {

// 数组在创建出来之后,会按照类型给数组中的每个元素赋缺省值。

// 引用类型的缺省值是null

Mercandise[] merchandises = new Mercandise[9];

// 给索引为偶数的引用赋值

for (int i = 0; i < merchandises.length; i++) {

if (i % 2 == 0) {

merchandises[i] = new Mercandise();

}

}

// 依次输出数组的值

for (int i = 0; i < merchandises.length; i++) {

System.out.println(merchandises[i]);

}

System.out.println(merchandises[7]);

merchandises[7].name = "不存在的商品,不存在的名字";

}

}

依次输出数组的值结果: ----打印的是引用的地址

Mercandise@2f92e0f4

null

Mercandise@28a418fc

null

Mercandise@5305068a

null

Mercandise@1f32e575

null

Mercandise@279f2327

null

merchandises[7].name = "不存在的商品,不存在的名字"; --这句话会报错

Exception in thread "main" java.lang.NullPointerException

at CheckBeforeUse.main

这就是null带来的问题

1.大名鼎鼎的NullPointerException(NPE)

如果一个引用为空,然后还尝试去访问这个引用的一些属性,会报错

2.如果不确定,使用前判断引用是不是空

如何避免:(使用前判断是否为空)

if (merchandises[i]! = null)

{**********}

通过null理解引用的二极跳

引用为null的时候可以直接输出,引用本身有值,值为空

此时再问这个值为空的具体属性,会报错

6a4557b55016501ed7b822ed774ce9d5.png

6a4557b55016501ed7b822ed774ce9d5.png

6a4557b55016501ed7b822ed774ce9d5.png

6a4557b55016501ed7b822ed774ce9d5.png

6a4557b55016501ed7b822ed774ce9d5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值