Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与Java对象混淆_Java_Arrays - Fatal编程技术网

与Java对象混淆

与Java对象混淆,java,arrays,Java,Arrays,我是Java初学者,正在尝试以下代码: public class MovieTestDrive { public static void main(String[] args) { Movie one = new Movie(); one.title = "Gone with the Stock"; one.playIt(); System.out.println(one.title); // Works!! one.

我是Java初学者,正在尝试以下代码:

public class MovieTestDrive {

    public static void main(String[] args) {
        Movie one = new Movie();
        one.title = "Gone with the Stock";
        one.playIt();
        System.out.println(one.title);   // Works!! one.title is equal to Dora

        Movie [] arr = new Movie[2];
        arr[0].playIt();
        System.out.println(arr[0].title); //Error: Null Pointer Exception

    }
}


class Movie {

        String title;

        void playIt() {
             title = "Dora";
        }

 }

为什么在使用数组时,代码在赋值基元变量时起作用,而在赋值基元变量时不起作用?

因为
arr
中只有一个对象引用数组,但它们没有初始化为指向任何实际对象

您还需要执行以下操作:

arr[0] = new Movie();
arr[1] = new Movie();

因为
arr
中只有一个对象引用数组,但它们没有初始化为指向任何实际对象

您还需要执行以下操作:

arr[0] = new Movie();
arr[1] = new Movie();

您的电影阵列中还没有任何内容。您需要先将对象放入数组中,然后才能对其进行操作


在“Movie[]arr=new Movie[2];”和“arr[0].playIt();”之间,您需要将电影对象分配给数组,以便执行.playIt()函数并实际执行任何操作。

您的电影数组中还没有任何内容。您需要先将对象放入数组中,然后才能对其进行操作


在“Movie[]arr=new Movie[2];”和“arr[0].playIt();”之间,您需要将电影对象分配给数组,以便执行.playIt()函数并实际执行任何操作。

NPE位于前一行的
arr[0].playIt()


不过,这与对象无关,这是因为数组是空的。

NPE
位于前一行,位于
arr[0]。playIt()

Movie [] arr = new Movie[2]; // creates an empty array of two elements [null, null]

// now lets add Movie objects
arr[0] = new Movie();
...
但这与对象无关,这是因为数组是空的

Movie [] arr = new Movie[2]; // creates an empty array of two elements [null, null]

// now lets add Movie objects
arr[0] = new Movie();
...
我建议使用ArrayList而不是array:

List<Movie> movies = new ArrayList<Movie>();
movies.add(new Movie());
...
List movies=new ArrayList();
添加(新电影());
...
我建议使用ArrayList而不是array:

List<Movie> movies = new ArrayList<Movie>();
movies.add(new Movie());
...
List movies=new ArrayList();
添加(新电影());
...

您需要填充阵列。到目前为止,您所做的只是为电影对象数组分配空间。你没有把任何东西放进那个空间。你可以用
arr[i]=新电影();其中i是数组索引

您需要填充数组。到目前为止,您所做的只是为电影对象数组分配空间。你没有把任何东西放进那个空间。你可以用 arr[i]=新电影();其中i是数组索引