[英]Setting values to an Array of objects
我正在修訂Java書籍,以確保我對對象和Java基本知識有扎實的理解。 我偶然發現了我正在閱讀的《 Head First:Java 2nd Edition》(2005年)一書中的這段代碼。
class Book {
String title;
String author;
}
class Main {
public static void main(String args[]) {
int x = 0;
Book[] myBooks = new Book[3];
myBooks[0] = new Book();
myBooks[1] = new Book();
myBooks[2] = new Book();
myBooks[0].title = "Example title xx";
myBooks[1].title = "Example title cc";
myBooks[2].title = "Example title yy";
myBooks[0].author = "Example author xx";
myBooks[1].author = "Example author cc";
myBooks[2].author = "Example author yy";
while (x < 3) {
System.out.print(myBooks[x].title);
System.out.print(", author ");
System.out.println(myBooks[x].author);
x = x + 1;
}
}
}
我不太了解myBooks[0].title = "Example title xx"
的語法,我承認我對數組及其如何工作還沒有足夠的經驗,但是遍歷數組不是更好的做法並使用setter方法設置所有對象字段?
我認為這里是這種情況
據我有限的理解,這種為這些字段分配值的特定方法與這兩個類的范圍有關。 使用靜態方法的名稱的方式相同,而不是首先創建它們各自類的對象,而是使用靜態變量。
看起來很瑣碎,但對我來說,理解和掌握這個想法非常重要。 希望您能為我解決。
首先,讓我們在不使用數組的情況下重寫程序:
Book myBooks0, myBooks1, myBooks2;
myBooks0 = new Book();
myBooks1 = new Book();
myBooks2 = new Book();
myBooks0.title = "Example title xx";
myBooks1.title = "Example title cc";
myBooks2.title = "Example title yy";
myBooks0.author = "Example author xx";
myBooks1.author = "Example author cc";
myBooks2.author = "Example author yy";
如果您了解引用cusom類的Java變量,那么這根本就不是謎。
接下來,讓我們回到您的數組:
Book[] myBooks = new Book[3];
它用一個數組變量替換了上面的三個命名變量,所以現在不用編寫myBooksX
而是編寫myBooks[X]
。
這是兩者之間最大的不同。 數組的優點是X
可以是變量或整數表達式,其結果為0、1或2,而對於單個變量,數字必須是硬編碼的。
myBooks[0].title = "Example title xx"
將字符串分配給數組中第一個元素的title
字段
遍歷數組並使用setter方法設置所有對象字段不是更好的做法嗎?
一般來說,是的。
當您使用數組時,您應該了解這個概念。
Book[] mybooks = new Book[3]
這意味着將有一個Book類型的數組。 Book[0]
表示,這是對內存中真實對象的引用(就像對該對象的遠程控制一樣)。
因此,當您調用mybook[0].title
,意味着您正在調用Book[0]
的標題方法(就像在Book [0]的遙控器上按按鈕標題一樣)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.