与Java Objects混淆

new*_*bie 1 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.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";
        }

 }
Run Code Online (Sandbox Code Playgroud)

为什么代码在原始变量的赋值中起作用而在使用数组时却不起作用?

unw*_*ind 10

因为你所拥有的arr只是一个对象引用数组,但它们并未初始化为指向任何实际对象.

你还需要这样做:

arr[0] = new Movie();
arr[1] = new Movie();
Run Code Online (Sandbox Code Playgroud)