Java:int [] array vs int array []

xum*_*202 55 java arrays performance definition

可能重复:
int []数组和int数组[]之间的差异

两者之间有区别吗?

int[] array = new int[10];
Run Code Online (Sandbox Code Playgroud)

int array[] = new int[10];
Run Code Online (Sandbox Code Playgroud)

两者都有效,结果完全相同.哪一个更快或更好?是否有推荐的风格指南?

Eng*_*uad 100

两者都是等价的.看看以下内容:

int[] array;

// is equivalent to

int array[];
Run Code Online (Sandbox Code Playgroud)
int var, array[];

// is equivalent to

int var;
int[] array;
Run Code Online (Sandbox Code Playgroud)
int[] array1, array2[];

// is equivalent to

int[] array1;
int[][] array2;
Run Code Online (Sandbox Code Playgroud)
public static int[] getArray()
{
    // ..
}

// is equivalent to

public static int getArray()[]
{
    // ..
}
Run Code Online (Sandbox Code Playgroud)

  • 我个人认为使用`[]`的灵活性可能令人困惑,应该更加一致(和严格). (8认同)

Per*_*ror 8

它们基本相同,任何类型的性能没有差别,但推荐的是第一种情况,因为它更具可读性.

int[] array = new int[10];
Run Code Online (Sandbox Code Playgroud)

来自JLS:

[]可以作为声明开头的类型的一部分出现,也可以作为特定变量的声明者的一部分出现,或者两者兼而有之.


Sha*_*shi 8

来自JLS http://docs.oracle.com/javase/specs/jls/se5.0/html/arrays.html#10.2

以下是不创建数组的数组变量的声明示例:

int[ ] ai;          // array of int
short[ ][ ] as;         // array of array of short
Object[ ]   ao,     // array of Object
        otherAo;    // array of Object
Collection<?>[ ] ca;        // array of Collection of unknown type
short       s,      // scalar short 
        aas[ ][ ];  // array of array of short
Run Code Online (Sandbox Code Playgroud)

以下是创建数组对象的数组变量声明的一些示例:

Exception ae[ ] = new Exception[3]; 
Object aao[ ][ ] = new Exception[2][3];
int[ ] factorial = { 1, 1, 2, 6, 24, 120, 720, 5040 };
char ac[ ] = { 'n', 'o', 't', ' ', 'a', ' ',
                 'S', 't', 'r', 'i', 'n', 'g' }; 
String[ ] aas = { "array", "of", "String", };
Run Code Online (Sandbox Code Playgroud)

[]可能在声明开头作为类型的一部分出现,或作为特定变量的声明者的一部分出现,或者两者都出现,如下例所示:

byte[ ] rowvector, colvector, matrix[ ];
Run Code Online (Sandbox Code Playgroud)

该声明相当于:

byte rowvector[ ], colvector[ ], matrix[ ][ ];
Run Code Online (Sandbox Code Playgroud)