Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数组对象和初始值设定项混淆_Java - Fatal编程技术网

Java数组对象和初始值设定项混淆

Java数组对象和初始值设定项混淆,java,Java,我正在学习java,听说数组是作为对象实现的。但它们显示了两种不同的代码,没有深入细节 首先,他们要求我们使用这样的数组,但缺点是手动添加值: int nums[] = new int[10]; nums[0] = 99; nums[1] = -622; . . . 然后,他们在一些程序中使用这种方法,说不需要新的,因为Java会自动执行以下操作: int nums[] = {99, - 10, 100123, 18, - 972 ......} 如果第二个代码更短,并且允许我直接使用数

我正在学习java,听说数组是作为对象实现的。但它们显示了两种不同的代码,没有深入细节

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

int nums[] = new int[10];  
nums[0] = 99;
nums[1] = -622;
.
.
.
然后,他们在一些程序中使用这种方法,说不需要新的,因为Java会自动执行以下操作:

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

如果第二个代码更短,并且允许我直接使用数组,那么如果第一个代码做相同的事情,但第一个代码需要更多的代码来手动输入值,那么第一个代码的意义是什么呢?不,因为您将拥有一个巨大的java文件

第一种方法基本上是分配空间:

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

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

    array[i] = i;
}
现在,如果数组的大小更改,则不必更改循环。但是,如果使用第二种方法,并且需要一个1000万值的数组,那么必须向java文件中添加900万值和900万个逗号,这是不可伸缩的

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

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

假设您正在初始化一个包含100万个值的数组,您会使用第二种方法吗?不,因为您将拥有一个巨大的java文件

第一种方法基本上是分配空间:

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

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

    array[i] = i;
}
现在,如果数组的大小更改,则不必更改循环。但是,如果使用第二种方法,并且需要一个1000万值的数组,那么必须向java文件中添加900万值和900万个逗号,这是不可伸缩的

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

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

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

int nums[] = new int[10];
//这将使用索引0处的值初始化数组

nums[0] = 99;
//这是在索引1处用一个值初始化数组,并同样分配其余的数组索引值

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

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

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

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

int nums[] = new int[10];
//这将使用索引0处的值初始化数组

nums[0] = 99;
//这是在索引1处用一个值初始化数组,并同样分配其余的数组索引值

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

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

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

假设您希望在运行时生成一系列随机整数,并希望存储在数组中:

int[] array = new int[1000000];
Random r = new Random();
for (int i = 0; i < array.length; i++)
    array[i] = r.nextInt();
int[]数组=新的int[1000000];
随机r=新随机();
for(int i=0;i
假设您希望在运行时生成一系列随机整数,并希望存储在数组中:

int[] array = new int[1000000];
Random r = new Random();
for (int i = 0; i < array.length; i++)
    array[i] = r.nextInt();
int[]数组=新的int[1000000];
随机r=新随机();
for(int i=0;i
当您在声明数组时不知道数组项时,则首选方法1

以及

当您在声明数组时知道数组的所有值时,如果在声明数组时不知道数组的项目,则选择方法-1

以及


当您在声明数组时知道数组的所有值,然后选择方法2

方法2要求您在声明数组时拥有所有值,使用方法1您可以稍后填充它。有时,您在初始化数组时还不知道这些值。例如,想象一个程序,其中用户必须输入10个值。也许你应该看看这里,所以使用这两个代码取决于是否给了我要使用的值?第二行代码也是一个对象,因为我被告知数组都是对象。两个方法最终都会给出一个数组对象
intnums[]=newint[10]
将编译成类似于
intnums[]={0,0,0,0,0,0,0}
的对象。因此,第二种方法是用固定大小实例化数组并放入元素的简写方法。使用第2个方法实例化的数组以后仍然可以逐个元素更改。方法2要求您在声明数组时拥有所有值,使用方法1可以在以后填充数组。有时,初始化数组时您还不知道值。例如,想象一个程序,其中用户必须输入10个值。也许你应该看看这里,所以使用这两个代码取决于是否给了我要使用的值?第二行代码也是一个对象,因为我被告知数组都是对象。两个方法最终都会给出一个数组对象
intnums[]=newint[10]
将编译成类似于
intnu的对象