Java字符串数组差异

我现在很无聊,正在做一些Java练习测试,因为我已经用Java编程了很长时间。 在一个问题之后,我现在想知道以下几点之间的区别:

String[] test1 = { "A", "B", "C" }; String[] test2 = new String[]{ "A", "B", "C" }; String test3[] = { "A", "B", "C" }; String test4[] = new String[]{ "A", "B", "C" }; 

当我在Java IDE中输入它时,我没有收到任何错误。 我还没有尝试编译它们中的任何一个(虽然我过去主要使用test2 ,所以我知道有一个工作)。

  • 那么,这些都是编译吗?
  • 如果是的话,有什么不同(如果有的话)?
  • test1的性能是否比test2更好,因为你没有进行新的String[] -instantiation,或者这是在幕后完成的吗?)
  • (如果test1test3相同:为什么test3test4存在于Java中,如果它与test1test2相同?是否有任何情况下使用字段名后面的[]优先于类型后面?)
  • (除了这四种之外还有更多(几乎相似)的变种吗?)
  • (和其他问题一样。)

只是想出于好奇而知道。 我猜每天都会学到新东西。

它们都是等价的。

  • 那么,这些都是编译吗?

是的,你自己也可以validation。

  • 如果是的话,有什么不同(如果有的话)?
  • (test1的性能是否比test2更好,因为你没有进行新的String [] – 实例化,或者这是在幕后做的吗?)

编译的字节代码没有区别。

  • (如果test1与test3相同:为什么test3和test4与test1和test2相同?)

它只是一种替代方式来编写它,因为数组索引可以放在类型名称之后以及标识符名称之后。 唯一不同的是,如果在一行中声明多个变量,如果在类型名称后面放置索引,则所有列出的标识符将是该类型的数组,而如果索引放在标识符名称之后,则只有该标识符将是数组。

例:

 String[] array1, array2; // Both are arrays String array3[], notArray4; // Only array3 is array 

我建议在类型( String[] array1 )之后放置索引,这样它就会毫不含糊。

(除了这四种之外还有更多(几乎相似)的变种吗?)

从来没听说过。

声明数组的首选方法是将[]附加到类型。 所以String[]而不是String test3[] 。 这照顾了最后2。

String允许你编写String[] test1 = { "A", "B", "C" };的快捷方式String[] test1 = { "A", "B", "C" }; ,不添加new String[]

总而言之,根据代码约定和最少代码输入的最佳方式是您的首选: String[] test1 = { "A", "B", "C" };

所有都是合法的语法。