这个阵列是什么?

Huy*_*han 8 java arrays

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

Boolean [] ba [];
Run Code Online (Sandbox Code Playgroud)

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

int [] numberArray;

int numberArray [];

int [] [] num2DArray;
Run Code Online (Sandbox Code Playgroud)

谢谢!

Den*_*ret 13

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

Boolean  [][] ba ;
Boolean  [] ba [];
Boolean  ba [][] ;
Run Code Online (Sandbox Code Playgroud)

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

 int a[];
Run Code Online (Sandbox Code Playgroud)

而java中的建议是在之前一致地声明类型

 int[] a;
Run Code Online (Sandbox Code Playgroud)

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

还有两个提取物:

声明器中允许使用括号作为对C和C++传统的认可.但是,变量声明的一般规则允许括号出现在类型和声明符中,以便本地变量声明

[...]

我们不建议在数组变量声明中使用"混合表示法",其中括号出现在类型和声明符中.

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

 Boolean[][] ba ;
Run Code Online (Sandbox Code Playgroud)

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

public synchronized byte toByteArray()[] {
    return Arrays.copyOf(buf, count);
}
Run Code Online (Sandbox Code Playgroud)

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