gpt4 book ai didi

Java 字符串与数组的区别

转载 作者:行者123 更新时间:2023-12-02 23:31:45 24 4
gpt4 key购买 nike

我目前很无聊,正在做一些 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 相同:如果 test3test4 相同,为什么 Java 中会存在 test1test2 ?是否有在字段名称后面使用 [] 的情况是上面类型后面的首选吗?)
  • (除了这四种之外,还有更多(几乎相似)的变体吗?)
  • (以及其他类似问题。)

只是出于好奇想了解一下。我想我们每天都会学到新东西。

最佳答案

它们都是等价的。

  • So, does each of these compile?

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

  • And if yes, what are the differences (if any)?
  • (Is test1 better for performance than test2 because you don't make a new String[]-instantiation, or is this done anyway behind the scenes?)

编译后的字节码没有差异。

  • (If test1 is the same as test3: Why does test3 and test4 exist if it's the same as test1 and test2?)

这只是另一种编写方式,因为数组索引可以放在类型名称之后以及标识符名称之后。唯一的区别是,如果在一行中声明多个变量,如果索引放在类型名称后面,则所有列出的标识符都将是该类型的数组,而如果索引放在标识符名称后面,则只有该标识符将是数组.

示例:

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

我建议将索引放在类型之后(String[] array1),这样它就不会产生歧义。

(Are there more (almost similar) variants apart from these four?)

据我所知,没有。

关于Java 字符串与数组的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25385217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com