NullPointerException是当我们为对象引用分配空值时。
当程序尝试使用保存空值的对象引用时,可能会引发NullPointerException。
我们将研究如何避免NullPointerException。有多种方法可以避免此异常:
1)为了避免NullPointerException,我们应该记住一件事,即在使用之前必须使用指定的值初始化所有对象引用。
public void display(String str) { if (str.equals("Java")) { System.out.println("Java"); } }
在上述情况下,如果将参数str作为空值传递,则会发生NullPointerException。可以如下编写相同的方法来避免NullPointerException。
public void display(String str) { if ("Java".equals(str)) { System.out.println("Java"); } }
2)我们应该为参数添加一个空检查,并在需要时抛出IllegalArgumentException。
public int CountClassObjects(Object[] count) { if (count == null) throw new IllegalArgumentException("No class objects is refernced"); return count; }
3)我们应该使用String.valueOf()代替toString()
方法。对象obj = null;
//打印null- System.out.println(String.valueOf(obj)); //该语句将抛出java.lang.NullPointerException- System.out.println(obj.toString());
示例:引发NullPointerException
public class NullPointerExceptionClass { public static void main(String[] args) { String str = null; System.out.println("Display String length is " + str.length()); System.out.println("The String representation is " + str.toString()); } }
输出结果
D:\Programs>javac NullPointerExceptionClass.java D:\Programs>java NullPointerExceptionClass Exception in thread "main" java.lang.NullPointerException at Java7.main(Java7.java:4)
示例:取消引发NullPointerException
public class UnRaisingNullPointerClass { public static void main(String[] args) { String str = null; System.out.println("Display String is " + str); System.out.println("Display String value is " + str.valueOf(str)); } }
输出结果
D:\Programs>javac UnRaisingNullPointerClass.java D:\Programs>java UnRaisingNullPointerClass Display String is null Display String value is null