簡體   English   中英

與Java對象混淆

[英]Confused with Java Objects

我是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();

電影數組中還沒有任何內容。 您需要先將對象放入數組中,然后才能對它們進行操作。

在“ Movie [] arr = new Movie [2];”之間 和“ arr [0] .playIt();”,您需要將Movie對象分配給數組才能執行.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();
...

我建議使用ArrayList而不是array:

List<Movie> movies = new ArrayList<Movie>();
movies.add(new Movie());
...

您需要填充數組。 到目前為止,您所做的就是為電影對象數組分配空間。 您沒有在該空間中放入任何物體。 您可以使用arr [i] = new Movie(); 我是數組索引

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM