我在一本书中遇到了这个代码行,它说这是合法的,但我不太懂,但谷歌搜索。 代码是:
Boolean [] ba [];
我只知道要创建一个数组,它应该是这样的:
int [] numberArray;
int numberArray [];
int [] [] num2DArray;
谢谢!
答案 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[];
arr
是Boolean
的数组,而arr2
是Boolean
的数组数组。