【问题标题】:Java: int[] array vs int array[] [duplicate]Java:int [] 数组与 int 数组 [] [重复]
【发布时间】:2013-01-11 15:45:28
【问题描述】:

有区别吗

int[] array = new int[10];

int array[] = new int[10];

?

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

【问题讨论】:

  • 官方推荐:第二种表示法是“Yechh”:docs.oracle.com/javase/specs/jls/se7/html/…
  • @assylias 我认为 yechhh 指的是做 int[] a[],而不是 int[][] a。它是相关的,但与 OP 所问的并不完全相同。

标签: java arrays performance definition


【解决方案1】:

两者是等价的。请看以下内容:

int[] array;

// is equivalent to

int array[];
int var, array[];

// is equivalent to

int var;
int[] array;
int[] array1, array2[];

// is equivalent to

int[] array1;
int[][] array2;
public static int[] getArray()
{
    // ..
}

// is equivalent to

public static int getArray()[]
{
    // ..
}

【讨论】:

  • 我个人认为使用[] 的灵活性可能会令人困惑,应该更加一致(和严格)。
【解决方案2】:

来自 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

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

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", };

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

byte[ ] rowvector, colvector, matrix[ ];

这个声明相当于:

byte rowvector[ ], colvector[ ], matrix[ ][ ];

【讨论】:

【解决方案3】:

两者基本相同,性能没有任何区别,但推荐的是第一种情况,因为它更具可读性。

int[] array = new int[10];

来自JLS:

[] 可能作为类型的一部分出现在 声明,或作为特定变量声明符的一部分, 或两者兼而有之。

【讨论】:

  • 如果你扩展答案会更好。谁建议这样做?对我来说,第二个更具可读性。
【解决方案4】:

两者都是一样的。 我通常使用int[] array = new int[10];,因为int[] 类型的可读性更好(连续)。

【讨论】:

    【解决方案5】:

    不,没有区别。但我更喜欢使用int[] array,因为它更具可读性。

    【讨论】:

      【解决方案6】:

      这两种声明没有区别,而且都具有相同的性能。

      【讨论】:

        【解决方案7】:

        几乎没有区别。

        【讨论】:

          【解决方案8】:

          在这两个示例中,您都将new int[10] 分配给引用变量。

          以任何一种方式分配给引用变量在性能上都是相同的。

          int[] array = new int[10];
          

          上面的符号被认为是可读性的最佳实践。

          干杯

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-01-02
            • 2016-01-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-01
            • 1970-01-01
            • 2013-04-23
            相关资源
            最近更新 更多