Java数组对象和初始化程序的混淆

时间:2018-07-02 05:56:28

标签: java

我正在学习Java,并被告知数组是作为对象实现的。但是它们显示两个不同的代码,而没有深入细节。

首先,他们要求我们使用像这样的数组,但缺点是要手动添加值:

int nums[] = new int[10];  
nums[0] = 99;
nums[1] = -622;
.
.
.

然后他们在某些程序中使用此命令,因为Java会自动执行操作,所以不需要new:

int nums[] = {99, - 10, 100123, 18, - 972 ......}

如果第二个代码较短,并且允许我直接使用数组,那么如果它们执行相同的操作,那么第一个代码的意义是什么,但是第一个需要更多代码才能手动输入值。

4 个答案:

答案 0 :(得分:2)

假设您要初始化一百万个值的数组,您会使用第二种方法吗?不,因为您会有一个巨大的Java文件。

第一种方法实质上是分配空间:

int[] array = new int[1000000];

在内存中创建100万个默认值为0的空间。现在,如果要初始化它们,可以使用循环:

for (int i = 0; i < array.length; i++) {

    array[i] = i;
}

如果您想要一个包含一千万个值的数组,则只需更改一个数字:

// Just add a 0 to 1000000
int[] array = new int[10000000]

现在,如果数组的大小发生变化,则不必更改循环。但是,如果您使用第二种方法并想要一个1000万个值的数组,则必须向Java文件中添加900万个值和900万个逗号-不可伸缩。

int[] array = {1, 2, 3, 4, ... 1000000};

第二种方法不是“可伸缩的”。它仅适用于小型阵列,您可以放心地假定该阵列的默认值不会更改。否则,使用第一种(更常见的)方法会更有意义。

答案 1 :(得分:0)

//这是首先声明和初始化具有预定义大小的数组的一种方法

nums[0] = 99;

//这正在使用索引0处的值初始化数组

nums[1] = -622;

//这将使用索引1处的值初始化数组,并同样分配其余的数组索引值

int nums[] = {99, - 10, 100123, 18, - 972 ......}

//这是直接使用预定义值声明和初始化数组的另一种方法。在这里,如果您看到的不是直接声明数组大小,而是直接为其初始化值

'02-03-2018 12:00', '03-04-2018 14:46', '03-04-2018 14:44' etc.

这取决于您更喜欢使用数组的方式,但是必须记住,每当使用“ new”关键字时,每次都会在内存中创建新的空间或资源。

答案 2 :(得分:0)

想象一下,您想在运行时生成一系列随机整数并想存储在数组中:

int[] array = new int[1000000];
Random r = new Random();
for (int i = 0; i < array.length; i++)
    array[i] = r.nextInt();

答案 3 :(得分:0)

当您在声明数组时 不知道 数组的项目时,则首选 method-1

当您 了解 数组声明时的所有数组值时,请使用 method-2