这是用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部分。我在这里做错了什么?

最佳答案

答案似乎在我眼前,但我不知何故错过了它。这是Java规范中的原因:

生产形式右侧的语法[x]表示零或
x的一次出现。也就是说,x是一个可选符号。的
包含可选符号的替代实际上定义了两个
备选方案:一种省略可选符号,而另一种则包括
它。

这意味着您可以编写String[][][] s = new String[2][][];
链接:https://docs.oracle.com/javase/specs/jls/se8/html/jls-2.html#jls-2.4

07-26 00:59