声明字符串数组的区别

时间:2014-03-17 18:48:13

标签: java arrays string

这有什么区别:

String [] columns = new String []{KEY_ROWID, KEY_TITLE, KEY_DESC, KEY_TIME};

而且这个:

String [] columns={KEY_ROWID, KEY_TITLE, KEY_DESC, KEY_TIME};

3 个答案:

答案 0 :(得分:1)

无。

后一版本是一种方便的快捷语法,只能在声明语句中使用,但结果完全相同。

答案 1 :(得分:0)

它们在字符串数组中产生相同的实例化(仅在声明中可用),在获得的结果中完全没有差别。但是,我大多选择第一个(只是个人偏好)。

编辑:对不起,当第一个答案出现时我正在打字。

答案 2 :(得分:0)

第一行使用包含数组初始值设定项的数组创建表达式,第二行仅包含数组初始值设定项。在这里,它们执行相同的功能 - 创建和初始化数组。但只有一个仅在声明数组时有效。

array initializer is defined in the JLS, Section 10.6

  

数组初始值设定项可以在声明中指定(§8.3,§9.3,§14.4),也可以作为数组创建表达式的一部分(§15.10)

ArrayInitializer:
    { VariableInitializersopt ,opt }

VariableInitializers:
    VariableInitializer
    VariableInitializers , VariableInitializer

和第15.10节定义了需要new SomeType[]的数组创建表达式:

  

数组创建表达式用于创建新数组(第10节)。

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 [ ]

因此,如果它是数组变量声明的一部分,则可省略new SomeType[]部分,但必须将其包含在其他地方,例如赋值表达式。