小编典典

Java字符串数组差异

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[]实例化还是要在幕后完成此操作要好?)
  • (如果test1test3:相同,为什么test3test4Java test1和and 相同,并且为什么在Java中存在test2?在任何情况下,[]在类型名称之后使用field-name还是首选?)
  • (除了这四个以外,还有更多(几乎相似)的变体吗?)
  • (以及其他类似问题)。

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


阅读 296

收藏
2020-11-26

共1个答案

小编典典

它们都是等效的。

  • 那么,它们每个都可以编译吗?

是的,您自己也可以验证。

  • 如果是的话,有什么区别(如果有)?
  • (因为您没有创建新的String []实例,或者在幕后进行了此操作,所以test1的性能比test2好吗?)

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

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

这只是写它的一种替代方法,因为数组索引可以放在类型名称之后,也可以放在标识符名称之后。唯一的区别是,如果在一行中声明多个变量,如果将索引放置在类型名称之后,则所有列出的标识符将是该类型的数组,而如果将索引放置在标识符名称之后,则仅该标识符将是数组。

例:

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

我建议将索引放在类型(String[] array1)后面,这样就不会造成歧义。

(除了这四个以外,还有更多(几乎相似)的变体吗?)

从来没听说过。

2020-11-26