8

我在一本书中遇到了这个代码行,它说这是合法的,但我在谷歌搜索时并不真正理解。代码是:

Boolean [] ba [];

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

int [] numberArray;

int numberArray [];

int [] [] num2DArray;

谢谢!

4

4 回答 4

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++ 传统的致敬。然而,变量声明的一般规则允许括号出现在类型和声明符中,以便局部变量声明

[...]

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

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

 Boolean[][] ba ;

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

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

这是允许的兼容性,但请不要使用它。大多数编码人员乍一看不会注意到[],因此不会立即读到这个方法返回一个数组。

于 2012-08-26T07:48:47.000 回答
4
Boolean [] ba [];

它是一个二维数组。

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

int ba[]; or int ba []; 

两者都是一样的。对于二维或二维数组

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

这都是一样的。但建议

String[] 是首选,因为它将 args 的类型(字符串数组)保持在一起。在更复杂且格式错误的方法签名中,很容易在参数名称后遗漏 []。

于 2012-08-26T08:24:32.483 回答
3

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

int arr [];
int [] arr;

二维数组:

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

要在 java 中声明更具可读性的数组,请使用以下约定

字符串 [][] 我的字符串数组;

于 2012-08-26T08:01:43.580 回答
2

这是一个向您展示[]位置何时产生影响的示例。

Boolean[] arr, arr2[];

是的arr数组,Booleanarr2是 的数组的数组Boolean

于 2012-08-26T09:10:10.973 回答