在我的书里,他们一直在以下两种方法之间切换声明数组的方式:
int array1[] = {1, 2, 3};
int[] array2 = {1, 2, 3};
我想知道两个括号的位置有什么区别,为什么当我把括号放在名称后面时(比如在array1中),我必须初始化它为一组值或一个新数组,但是在array2中,我可以简单地说“int[] array2;”然后稍后再使用它...?
int [] myArray1, myArray2;
int myArray1[], myArray2[];
int[]
表示一种类型。使用这种表示法时,与 C 风格表示法不同的是,类型的位不会被分隔开。 - Hot Licks它们之间没有区别,因为它们都声明了一个类型为"int数组"的变量。虽然文档中在变量名前使用方括号声明数组,但并没有所谓的"Java方式"(只有首选方式):
int[] array1;
注意:请注意,“声明”不是“初始化”(或实例化)
int[] array1; // declares an array of int named "array1"
// at this point, "array1" is NOT an array, but null
// Thus we "declare" a variable that will hold some
// data of type int[].
array1 = new int[] {1, 2, 3}; // legacy initialization; set an array of int
// with 3 values to "array1". Thus, we "initialize"
// the variable with some data of type int[]
因此,
int [] array1;
int array2[];
两者都声明了两个类型为int[]
的变量;然而,它们只是数据类型的声明,并不是数组。就像Oscar Gomez所说的那样,现在的区别在于第二种“方式”需要您指定变量是数组类型,而不仅仅是int。
int i[], j; // i is a data type array of int, while j is only an int
int [] k, l; // both k and l are of the same type: array of int
数组是通过数组创建表达式或数组初始化器创建的。前者适用于array2
(尽管在这种情况下提供了数组初始化器),而后者适用于array1
。
更多信息,请参见:
int[][] array1
、int[] array1[]
和int array1[][]
也是等价的。 - Eng.Fouad