这有什么区别:
String [] columns = new String []{KEY_ROWID, KEY_TITLE, KEY_DESC, KEY_TIME};
而且这个:
String [] columns={KEY_ROWID, KEY_TITLE, KEY_DESC, KEY_TIME};
答案 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[]
部分,但必须将其包含在其他地方,例如赋值表达式。