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 默认设置为零,第二行(值 5)写入 x 指向的内存位置。Java 禁止程序员操作内存盒,它只允许您访问对象的方法,而不能访问内存位置。

案例或 抛出 NullPointerException

1) 调用 null

Point dot = null;
dot.getX();
线程 main” java.lang.NullPointerException
at Test.main(Test.java:27)
2) 访问或修改 null 对象的实例。
访问空引用会引发异常 NullPointerException:

Point dot = null;
dot.getX();
线程 main” 中的异常 java.lang.NullPointerException
at Test.main(Test.java:38)
3) 使用 throw null
throw 时 验证参数是否为非 null, 如果它为零,它就会上升 NullPointerException.

IOException nullException = null;
try {
throw nullException;
} catch (IOException e) {
e.printStackTrace();
}
4) 调用空数组时 length

char[] ch = null;
int 长度 = ch.length;
5) 访问 null 位置时,例如 array
例如访问 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
      if(phrase!=null)
      System.out.print(phrase);
      }
      在某些情况下,此解决方案不是最佳解决方案,因为对象为 null,因此在 display() 过程中不会发生任何事情。
  • 在 IDE(如 Eclipse 或 Netbeans)中,将显示触发错误的行号。这是识别错误类型的好方法。
  • 变量可以有一个默认值,如以下代码中的 String:

    • String string=”;
  • 声明数组后初始化复选框。

    • //Declaration
      Thread[] th=new Thread[3];
      //初始化
      th[0]=new Thread();
      th[1]=new Thread();
      th[2]=new Thread();
  • 使用布尔变量、计数器,...等来优化你的代码.