簡體   English   中英

有人可以解釋這個數組發生了什么嗎?

[英]Can someone explain what is going on with this array?

我對數組的形成方式非常困惑。 這就是制作數組的方法。

public class TestProgram {

public static final Room[] rooms = new Room[]
{
  new Room ("GARDEN0001", "NorthWest Garden View", 45.00),
  new Room ("GARDEN0002", "SouthEast Garden View", 65.0),
  new Room ("GARDEN0003", "North Garden View", 35),
  new Room ("GARDEN0004", "South Garden View", 52),
  new Room ("GARDEN0005", "West Garden View", 35),
  new Room ("GARDEN0006", "East Garden View", 35)
};

我認為數據來自此類:

public class Room {
    public Room(String roomId, String description, double dailyRate){
        this.roomId = roomId;
        this.description = description;
        this.dailyRate = dailyRate;
        this.status = 'A';
    }

我們用這種方法從另一個類或其他類的構造函數聲明數組嗎? 我很困惑,但是行得通。

有人可以向我解釋為什么寫成Room[] rooms = new Room[]嗎?

分解:

Room[] rooms

聲明一個靜態字段(一個類變量),其名稱為rooms ,類型為Room[] ,它是Room對象的數組。

= new Room[] {new Room...};

使用Room對象初始化數組,並定義數組的大小(在Java中無法更改)。

這是數組的內聯初始化。

“通常”將聲明一個特定長度的數組,然后對其進行初始化或放入相關數據中(可能處於循環中)。 但是,可以像這樣在一行中完成-一個更簡單的示例是:

int[] numbers = new int[]{2, 3, 5};

在這里,我們有相同的情況,只是“數字”是“房間”對象(每個對象在這里創建和初始化),而不是整數。

此外,請注意數組是最終的-為數組分配了內容之后就可以了(可以更改數組中的數據,但不能更改其長度-或更改它以指向另一個數組)。 如果您的數據是最終數據-一次分配所有數據將更加清晰。

最后,它是靜態的-您不能在構造函數中執行此操作,除非您確保它為NULL(第一次運行,但此后其他所有操作都會失敗,因為您將嘗試重新分配一個公共的最終對象)。

總而言之,內聯聲明和最終靜態數組的初始化。 :-)

在這里,您聲明並初始化一個Room array 看-

Room rooms[] // declaration of 'Room' array    

之后 -

new Room[]
{
  new Room ("GARDEN0001", "NorthWest Garden View", 45.00),
  new Room ("GARDEN0002", "SouthEast Garden View", 65.0),
  new Room ("GARDEN0003", "North Garden View", 35),
  new Room ("GARDEN0004", "South Garden View", 52),
  new Room ("GARDEN0005", "West Garden View", 35),
  new Room ("GARDEN0006", "East Garden View", 35)
}; //initialization of the array.  

現在在這里,您的Room是使用您在此提到的數組元素創建的,大小為6。數組聲明和初始化實際上等效於以下代碼段-

int[] intArray = new int[]{11,222,333, 444};    

是的,您通過Room類構造函數將數據輸入陣列rooms 並查看由此創建的Room對象-將在room[0]找到new Room ("GARDEN0001", "NorthWest Garden View", 45.00) 同樣-

room[1] <-- new Room ("GARDEN0002", "SouthEast Garden View", 65.0)
room[2] <-- new Room ("GARDEN0003", "North Garden View", 35)
room[3] <-- new Room ("GARDEN0004", "South Garden View", 52)
room[4] <-- new Room ("GARDEN0005", "West Garden View", 35)
room[5] <-- new Room ("GARDEN0006", "East Garden View", 35)

暫無
暫無

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

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