How is this illegal

前端 未结 5 1498
南方客
南方客 2020-12-12 06:12
a) int i[] = new int[2]{1,2};
b) int[] i = new int[]{1,2,3}{4,5,6}; 

I know we cannot give size of an array at declaration . But in statement(a) we

5条回答
  •  余生分开走
    2020-12-12 06:13

    Why not consult the Java Language Specification?

    JLS 15.10 - Array Creation Expressions

    ArrayCreationExpression:
    new PrimitiveType DimExprs Dimsopt
    new ClassOrInterfaceType DimExprs Dimsopt
    new PrimitiveType Dims ArrayInitializer
    new ClassOrInterfaceType Dims ArrayInitializer
    
    DimExprs:
    DimExpr
    DimExprs DimExpr
    
    DimExpr:
    [ Expression ]
    
    Dims:
    [ ]
    Dims [ ]
    

    Notice that this means that array creation expressions with initializers can only have empty brackets.

    Array initializers are defined in 10.6

    ArrayInitializer:
    { VariableInitializersopt ,opt }
    
    VariableInitializers:
    VariableInitializer
    VariableInitializers , VariableInitializer
    
    The following is repeated from §8.3 to make the presentation here clearer:
    VariableInitializer:
    Expression
    ArrayInitializer
    

提交回复
热议问题