一尘不染

什么是java空指针异常NullPointerException,如何修改?

java

什么是Java空指针异常,它是如何发生的?如何修改?


阅读 1014

收藏
2020-01-07

共2个答案

一尘不染

当我们创建一个引用类型的变量时,实际上是创建了一个指向该变量的一个指针,例如:

Person tom = new Person();

这种情况下是,tom 其实是指向Person对象的一个指针。

如果我们访问一个没有初始化的对象时,就会出现空指针异常。例如,我们声明了一个Person对象tom,而没有给tom赋值(初始化),这样再调用tom的方法是就会出现空指针异常。

package com.codingdict;

public class Q1 {
    public static void main(String[] args) {
        Person p=null;
        p.getName();

    }
}

class Person{
    public void getName() {
        System.out.println("tom");
    }
}

package com.codingdict;
public class Q1 {
    public static void main(String[] args) {
        // s 为null, 当调用s的方法时会抛出空指针异常
        String s = null;
        s.toLowerCase();
    }
}

输出结果如下:


Exception in thread "main" java.lang.NullPointerException
    at com.codingdict.Q1.main(Q1.java:6)

如果是方法我们需要对方法参数做出判断:

static void hello(String name) {
    if (name!=null) {
        System.out.println("Hello,"+name.toUpperCase());
    }
}
2020-01-07
一尘不染

java 避免空指针的方法:

  1. 使用final修饰符强制初始化。
  2. 避免在方法中返回null,例如返回空集合。
  3. 使用注释@NotNull和@Nullable
  4. 快速失败,并使用断言避免空对象在整个应用程序中传播,因为它们不应为空。
  5. 首先将equals与已知对象一起使用: if(“knownObject”.equals(unknownObject)
  6. 使用valueOf()而不是toString()。
  7. 使用null安全StringUtils方法StringUtils.isEmpty(null)。
2020-01-08