Java字符串数组差异

Kev*_*sen 2 java arrays object

我现在很无聊,正在做一些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" };
Run Code Online (Sandbox Code Playgroud)

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

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

只想知道好奇心.我猜每天都会学到新东西.

icz*_*cza 5

它们都是等价的.

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

是的,你自己也可以验证.

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

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

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

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

例:

String[] array1, array2;    // Both are arrays
String array3[], notArray4; // Only array3 is array
Run Code Online (Sandbox Code Playgroud)

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

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

从来没听说过.