以下是Java中数组创建的语法:
ArrayCreationExpression:
new PrimitiveType DimExprs [Dims]
new ClassOrInterfaceType DimExprs [Dims]
new PrimitiveType Dims ArrayInitializer
new ClassOrInterfaceType Dims ArrayInitializer
DimExprs:
DimExpr {DimExpr}
DimExpr:
{Annotation} [ Expression ]
Dims:
{Annotation} [ ] {{Annotation} [ ]}
为什么在这里:new PrimitiveType DimExprs [Dims]
Dims
在括号中?如果它在括号中,那么我可以这样写:new int [2][2] [[] []]
其中[2][2]
是DimExprs
部分而[] []
是Dims
部分。我在这里做错了什么?
答案 0 :(得分:1)
似乎答案出现在我的眼前但不知何故我错过了它。以下是Java规范的原因:
生产右侧的语法[x]表示零或 一次出现x。也就是说,x是可选符号。该 包含可选符号的替代实际上定义了两个 替代方案:一个省略可选符号,另一个包含 它
这意味着您可以撰写String[][][] s = new String[2][][];
链接:https://docs.oracle.com/javase/specs/jls/se8/html/jls-2.html#jls-2.4