Java 声明字符串数组的不同之处
这两者有什么区别:Java 声明字符串数组的不同之处,java,arrays,string,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}; 没有 后一个版本是一种方便的快捷语法,只在声明语句中有效,但结果完全相同。它们生成相同的字符串数组实例化(仅在声明中可用),所获得的结果没有任何差异。然而,我大多选择第一个(只是个人喜好)
String [] columns = new String []{KEY_ROWID, KEY_TITLE, KEY_DESC, KEY_TIME};
这是:
String [] columns={KEY_ROWID, KEY_TITLE, KEY_DESC, KEY_TIME};
没有
后一个版本是一种方便的快捷语法,只在声明语句中有效,但结果完全相同。它们生成相同的字符串数组实例化(仅在声明中可用),所获得的结果没有任何差异。然而,我大多选择第一个(只是个人喜好)
编辑:很抱歉,我正在键入第一个答案。第一行使用包含数组初始值设定项的数组创建表达式,第二行仅包含数组初始值设定项。在这里,它们执行相同的功能——创建和初始化数组。但只有一个在声明数组时才有效 委员会: 数组初始值设定项可在声明中指定(§8.3、§9.3、§14.4),或作为数组创建表达式的一部分(§15.10) 第15.10节定义了数组创建表达式,要求
newsometype[]
:
数组创建表达式用于创建新数组(§10)
因此,如果
newsometype[]
部分是数组变量声明的一部分,则可以省略它,但必须在其他地方包括它,例如赋值表达式。没有区别。大多数人喜欢第二个,因为它有点速记。太复杂了……我还是个喜欢java的孩子。不过,谢谢你这么深入。
ArrayInitializer:
{ VariableInitializersopt ,opt }
VariableInitializers:
VariableInitializer
VariableInitializers , VariableInitializer
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 [ ]