我在一本书中遇到了这个代码行,它说这是合法的,但我在谷歌搜索时并不真正理解。代码是:
Boolean [] ba [];
我只知道要创建一个数组,应该是这样的:
int [] numberArray;
int numberArray [];
int [] [] num2DArray;
谢谢!
所有这 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);
}
这是允许的兼容性,但请不要使用它。大多数编码人员乍一看不会注意到[]
,因此不会立即读到这个方法返回一个数组。
Boolean [] ba [];
它是一个二维数组。
对于数组声明,您可以在变量名之前或之后放置括号。
int ba[]; or int ba [];
两者都是一样的。对于二维或二维数组
int [] [] num2DArray;
int [] num2DArray [];
int num2DArray[] [];
这都是一样的。但建议
String[] 是首选,因为它将 args 的类型(字符串数组)保持在一起。在更复杂且格式错误的方法签名中,很容易在参数名称后遗漏 []。
一维和二维数组可以用不同的方式声明。
int arr [];
int [] arr;
二维数组:
String [][] myStringArray = new String [x][y];
Boolean [][] booeanArr ;
Boolean [] booeanArr [] ;
Boolean booeanArr [][] ;
要在 java 中声明更具可读性的数组,请使用以下约定
字符串 [][] 我的字符串数组;
这是一个向您展示[]
位置何时产生影响的示例。
Boolean[] arr, arr2[];
是的arr
数组,Boolean
而arr2
是 的数组的数组Boolean
。