private String[][] var[]
此代码编译。但是他们不应该在类型或变量上创建数组吗?
最佳答案
代码是一样的:
private String[][][] var;
所有这些形式都是等价的:
private String[][][] var;
private String[][] var[];
private String[] var[][];
private String var[][][];
而且它们的意思都一样:一个三维的字符串数组。 String var[][][]
语法可能看起来有点奇怪,但它让 C/C++ 程序员在 Java 中感到宾至如归(这就是通常在 C 中声明数组类型的方式)/C++).
在 Java 中,首选 String[][][] var
语法,因为它清楚地表明 var
的 type 是String[][][]
,在其他语法及其不同变体中,类型信息在变量前后分开 - 尽管从编译器的角度来看它是完全合法的,但它更难阅读。
更奇怪的是,所有这些方法声明都是合法且等效的:
String[][][] m() {return null;}
String[][] m() [] {return null;}
String[] m() [][] {return null;}
String m() [][][] {return null;}
关于java - 为什么 java 允许 private String[][] var[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12523961/