这是什么java.lang.NullPointerException?

Ram*_*igi 2 java nullpointerexception

我编写了一个简短的脚本来了解Java数组:

class Dog {
  String name;
  void bark() {
    System.out.println(name + " is barking");
  }

  void eat() {
    System.out.println(name + " is eating");
  }
}

class mypets {
    public static void main(String [] args) {

    Dog dogA = new Dog();

    dogA.name="Lassy";
    dogA.bark();
    dogA.eat();

    Dog[] myDogs = new Dog[3];
    myDogs[0].name = "Barney";
    myDogs[0].bark();
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我编译并运行我的程序:

C:\Java>javac mypets.java

C:\Java>java mypets
Lassy is barking
Lassy is eating
Exception in thread "main" java.lang.NullPointerException
        at mypets.main(mypets.java:22)
Run Code Online (Sandbox Code Playgroud)

我做错了什么?我尝试使用谷歌搜索可怕的"java.lang.NullPointerException"但老实说我现在很困惑.

Ern*_*ill 7

数组就像一排可以容纳物体的盒子; 但是,在创建数组时,这些框是空的.这NullPointerException是Java告诉你的方式.所以,当你说的时候

Dog[] myDogs = new Dog[3];
myDogs[0].name = "Barney";
Run Code Online (Sandbox Code Playgroud)

你想设置的名称Dog在第一个框中,但就是没有这样的Dog-盒子是空的.你需要Dog在框中放置一个来完成这项工作:

Dog[] myDogs = new Dog[3];
myDogs[0] = new Dog();
myDogs[0].name = "Barney";
Run Code Online (Sandbox Code Playgroud)

然后它会工作.