[英]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.