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相同:如果Java中的test3test4test1test2相同,为什么在Java中也存在[]? -name在类型后面是首选?)
(除了这四个以外,还有更多(几乎相似)的变体吗?)
(以及其他类似问题)。

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

参考方案

它们都是等效的。

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

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

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

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

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

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

例:

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

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

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

从来没听说过。

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

Java-固定大小的列表与指定初始容量的列表之间的差异 - java

我在理解这一点上遇到了问题。当我们做 List<Integer> list = Arrays.asList(array); 我们不能在该列表上使用添加,删除之类的方法。我知道Arrays.asList()返回固定大小的列表。我不明白的是,如果我们创建一个具有指定初始容量的列表,例如List<Integer> list2 = new A…

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

从方法返回数组-Java - java

private static Coordinate[] getCircleCoordintaes() { Coordinate coordinates[] = {new Coordinate(0, 0)}; return coordinates; } 以上程序工作正常。在上面的程序中,返回的坐标数组首先初始化了数组使用这条线Coordinate coordi…

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…