Java 有人能解释一下这个数组是怎么回事吗?

Java 有人能解释一下这个数组是怎么回事吗?,java,arrays,initialization,Java,Arrays,Initialization,我对我的数组是如何形成的感到很困惑。这是为了生成数组而编写的 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",

我对我的数组是如何形成的感到很困惑。这是为了生成数组而编写的

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=newroom[]

分解它:

Room[] rooms
声明一个静态字段(类变量),其名称为
Room
,类型为
Room[]
,是
Room
对象的数组

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

使用
Room
对象初始化数组,并定义数组的大小(在java中无法更改)。

这是数组的内联初始化

“通常”您会声明一个特定长度的数组,然后初始化它或将其放入相关数据(可能在循环中)。但是,它可以在一行中完成,如下所示-一个更简单的示例是:

int[] numbers = new int[]{2, 3, 5};
这里我们有同样的情况,只是“数字”是房间对象(每个都在这里创建和初始化),而不是整数

此外,请注意数组是最终的-一旦您为它分配了某些内容,就是它(您可以更改数组中的数据,但不能更改其长度-或者将其更改为point do另一个数组)。如果您的数据是最终数据,那么一次分配所有数据更为清晰

最后,它是静态的-您不能在构造函数中执行此操作,除非您确保它为NULL(第一次可以工作,但之后每隔一次就会失败,因为您将尝试重新分配一个公共的final对象)


总而言之,最终静态数组的内联声明和初始化。:-)

这里声明并初始化房间的
数组。看-

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};    
是的,数组
房间
中的数据通过房间类构造函数传递。然后查看由该-
新房间创建的
房间
对象(“GARDEN0001”,“西北花园视图”,45.00)
将在
房间[0]
中找到。同样地—

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)

room[1]可能重复我不太清楚你到底在想什么。你能给我们比较一下你认为数组通常是如何“形成”的吗?你可以写得更简单些
Room[]rooms={newroom(…),…}