繁体   English   中英

声明字符串数组的区别

[英]difference in declaring your string array

之间的区别是什么:

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

和这个 :

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

没有。

后者是一种方便的快捷方式语法,仅在声明语句中起作用,但结果完全相同。

它们产生与字符串数组相同的实例化(仅可用于声明),所获得的结果完全没有区别。 但是,我主要选择第一个(只是个人喜好)。

编辑:抱歉,出现第一个答案时我正在打字。

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

数组初始化程序在JLS的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[]部分是数组变量的声明的一部分,则可以将其省略,但是必须将其包括在其他位置,例如赋值表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM