我正在学习 java,并被告知数组是作为对象实现的。但他们显示了两种不同的代码,但没有深入探讨细节。
首先他们要求我们使用这样的数组,但缺点是需要手动添加值:
int nums[] = new int[10];
nums[0] = 99;
nums[1] = -622;
.
.
.
然后他们在一些程序中使用它,说不需要 new,因为 Java 会自动做一些事情:
int nums[] = {99, - 10, 100123, 18, - 972 ......}
如果第二个代码更短并且允许我直接使用数组,如果它们做同样的事情但第一个代码需要更多代码来手动输入值,那么第一个代码的意义何在。
最佳答案
假设您要初始化一个包含 100 万个值的数组,您会使用第二种方法吗?不,因为你会有一个巨大的 java 文件。
第一种方法本质上是分配空间:
int[] array = new int[1000000];
在内存中创建100万个空间,默认值为0。现在如果你想初始化它们,你可以使用循环:
for (int i = 0; i < array.length; i++) {
array[i] = i;
}
如果您想要一个包含 1000 万个值的数组,则只需更改一个数字:
// Just add a 0 to 1000000
int[] array = new int[10000000]
现在,如果数组的大小发生变化,则不必更改循环。但是,如果您使用第二种方法并想要一个包含 1000 万个值的数组,则必须向您的 java 文件添加 900 万个值和 900 万个逗号 - 不可扩展。
int[] array = {1, 2, 3, 4, ... 1000000};
第二种方法不是“可扩展的”。它仅适用于小型数组,您可以放心地假设该数组的默认值不会更改。否则,使用第一种(更常见)方法更有意义。
关于Java 数组对象和初始化器混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51129838/