数组创建的约定是什么?

时间:2014-09-08 07:38:35

标签: java arrays initialization

在Java中创建数组有哪些约定?我应该使用

int[] myIntArray;

int myIntArray[];

此外,最好在创建时或之后初始化它们的值吗?

int[] myIntArray = {1,2,3};

VS

int[] myIntArray;
myIntArray = new int[] {1,2,3};

5 个答案:

答案 0 :(得分:3)

在声明一个数组时,约定说方括号包含数据类型而不是数组变量。

int[] myIntArray; // This is the convention
int myIntArray[]; // Ok by syntax, but not the Java convention

初始化值完全取决于您的使用情况,但最好有完整的数组声明

int[] myIntArray = new int[]{1,2,3}; // Better
int[] myIntArray = {1,2,3}; // Ok by syntax, but not the convention

答案 1 :(得分:3)

int[] aint a[]的声明都是等效的。

它只是一种替代方式来编写它,因为数组索引可以放在类型名称之后以及标识符名称之后。唯一不同的是,如果在一行中声明多个变量,如果索引放在类型名称之后,则所有列出的标识符将是该类型的数组,而如果索引放在标识符名称之后,则只有该标识符将是数组

示例:

int[] array1, array2;    // Both are arrays
int array3[], notArray4; // Only array3 is array

我建议在类型(int [] array1)之后放置索引,这样它就会毫不含糊。

在您尽可能声明时正确初始化数组,因为效率更高。如果你没有立即初始化你的数组,那么JVM将使用零或null值初始化它,你必须稍后填写它会更慢,因为那时JVM也将执行数组索引范围检查等等。更不用说你的代码会更长,更难阅读,你必须明确地提供索引(你可能会犯错),而在枚举你不提供索引的数组元素时(它们是隐含地推断出来的)数组长度。)

初始化示例:

// "Slow" filling
int[] arr = new int[3]; // Filled with zeros by default
arr[0] = 1; // Explicit index, index check
arr[1] = 2; // Explicit index, index check
arr[2] = 3; // Explicit index, index check

// "Fast" filling at creation time, implicit indices and array length,
// no index checks
int[] arr2 = {1, 2, 3};

答案 2 :(得分:0)

我认为取决于项目的代码标准。没有更好的方法。 就我而言,我使用

int[] myIntArray = {1,2,3};

答案 3 :(得分:0)

int arrayname []或int [] arrayname

这两种可能,但int[] arrayname更清楚,因为类型不是int,而是int数组(int[])。 Java Conventions执行相同的操作,如第19页所示。

数组初始化

int[] myIntArray = { 1, 2, 3 };更短,而且在我看来,更加整洁。

答案 4 :(得分:0)

int[] anArray; // Declares an array of integers
anArray = new int[10]; // One way to create an array is with the new operator

或者,您可以使用快捷语法创建和初始化数组:

int[] anArray = { 
    100, 200, 300,
    400, 500, 600, 
    700, 800, 900, 1000
};

声明数组引用时,应始终将数组括号放在声明的类型之后,而不是在标识符(变量名称)之后。这样,任何阅读代码的人都可以很容易地告诉我,例如,key是对int数组对象的引用,而不是int原语。

int[] key;
int key [];

同样在page detailing the initialization个变量上,他们有这个例子,演示了将括号放在变量名后面的可能问题:

int foo, fooarray[]; // WRONG!