这个阵列是什么?

时间:2012-08-26 07:44:47

标签: java arrays

我在一本书中遇到了这个代码行,它说这是合法的,但我不太懂,但谷歌搜索。 代码是:

Boolean [] ba [];

我只知道要创建一个数组,它应该是这样的:

int [] numberArray;

int numberArray [];

int [] [] num2DArray;

谢谢!

4 个答案:

答案 0 :(得分:13)

所有这3个声明在java中的含义相同:

Boolean  [][] ba ;
Boolean  [] ba [];
Boolean  ba [][] ;

我真的不喜欢它,但由于没有任何混淆,让它们等同起来并没有太大的危害。理由是C和C ++编码器用于某种符号:

 int a[];

虽然java中的建议是在

之前一致地声明类型
 int[] a;

以下是参考:http://docs.oracle.com/javase/specs/jls/se7/html/jls-10.html#jls-10.2

两个摘录:

  

允许在声明者中使用括号作为对C和C传统的点头   C ++。但是,变量声明的一般规则允许   括号出现在类型和声明符中,以便   局部变量声明

     

[...]

     

我们不建议在数组变量声明中使用“混合符号”,   括号出现在类型和声明符中。

为了在Java中更具可读性,我建议你坚持通常的

 Boolean[][] ba ;

请注意,您对方法声明有类似的行为。以下是ByteArrayOutputStream类源代码的摘录:

public synchronized byte toByteArray()[] {
    return Arrays.copyOf(buf, count);
}

这是允许for compatibility但请不要使用它。大多数程序员一见钟情就不会注意到[],因此不会立即读到此方法返回数组。

答案 1 :(得分:4)

Boolean [] ba [];

这是一个二维数组。

对于数组声明,您可以在变量名之前或之后放置括号。

int ba[]; or int ba []; 

两者都是一样的。对于二维或二维阵列

int [] [] num2DArray;
int [] num2DArray []; 
int num2DArray[] [];

这一切都是一样的。但建议

String []是首选,因为它保持args的类型 - String的数组 - 全部在一起。在更复杂和格式化较差的方法签名中,在参数名称之后很容易错过[]。

答案 2 :(得分:3)

一维和二维数组可以用不同的方式声明。

int arr [];
int [] arr;

二维数组:

String [][] myStringArray = new String [x][y];
Boolean  [][] booeanArr ;
Boolean  [] booeanArr [] ;
Boolean  booeanArr [][] ;

在java中使用以下约定声明更可读的数组

String [] [] myStringArray;

答案 3 :(得分:2)

这是一个示例,显示[]位置何时发挥作用。

Boolean[] arr, arr2[];

arrBoolean的数组,而arr2Boolean的数组数组。