java.lang.nullpointerexception 被抛出的情况
我们的程序中经常出现此错误。java.lang.NullPointerException。在以下情况下,当您尝试使用没有值的 null 对象时,将启动此 bug:- 调用 null 方法 instance.
- 访问或修改 null 对象的实例。
- 异常旨在抛出.
- 调用 null 数组的长度时。
- 访问 null 位置(如 array.
- 同步 null 对象或在同步块内使用它时。
对象由java
对象是类实例或数组,引用是指向这些对象的指针,空引用是参考资料 to no object.声明变量时,Java 会将 x 变量设置为 0,并创建一个引用该对象的指针。例如,在下面的代码中,我们将声明一个变量 x:
int x;在此示例中,变量 x 默认设置为零,第二行(值 5)写入 x 指向的内存位置。Java 禁止程序员操作内存盒,它只允许您访问对象的方法,而不能访问内存位置。
x = 5;
案例或 抛出 NullPointerException
1) 调用 nullPoint dot = null;
dot.getX();
线程 main” java.lang.NullPointerException2) 访问或修改 null 对象的实例。
at Test.main(Test.java:27)
Point dot = null;
dot.getX();
线程 main” 中的异常 java.lang.NullPointerException3) 使用 throw null
at Test.main(Test.java:38)
throw 时 验证参数是否为非 null, 如果它为零,它就会上升 NullPointerException.
IOException nullException = null;
try {
throw nullException;
} catch (IOException e) {
e.printStackTrace();
}
char[] ch = null;5) 访问 null 位置时,例如 array
int 长度 = ch.length;
例如访问 null.
char[] ch = null;
char c = ch[0];
6) 同步 null
你会得到 NullPointerException 如果您尝试同步对象 null 或将其放入同步块中。
Thread th=null;
synchronized(th){
System.out.print(此线程已同步”);
}
有什么预防措施
- 避免此类异常的最佳方法 如果您不是自己创建对象的 是检查对象是否为零。代码应该这样写:
void display(String phrase){在某些情况下,此解决方案不是最佳解决方案,因为对象为 null,因此在 display() 过程中不会发生任何事情。
//检查句子是否不是null
if(phrase!=null)
System.out.print(phrase);
}
String string=”;
//Declaration
Thread[] th=new Thread[3];
//初始化
th[0]=new Thread();
th[1]=new Thread();
th[2]=new Thread();