gpt4 book ai didi

java - 创建数组对象和用花括号分配数组有什么区别?

转载 作者:搜寻专家 更新时间:2023-11-01 02:58:42 26 4
gpt4 key购买 nike

在 Java 中,我在网上找到了一些教程,它们在涉及到数组时讲得不一样,

示例 1:

使用“new”关键字创建数组对象,然后为其赋值。

int[] values;
values = new int[5];

values [0] = 10;
values [1] = 20;
values [2] = 30;
values [3] = 40;
values [4] = 50;

System.out.println (values[2]); //Output : 30

例子2:

使用大括号给数组赋值。

int[] values = {34,45,62,72}

System.out.println (values [2]); //Output : 62

这两个例子有什么区别?

最佳答案

区别仅在于源代码方面。

使用花括号初始化数组的特殊语法只不过是 syntactic sugar 。意思是:编译器允许你用更简洁的方式表达一些东西。但是没有什么是你用第二种风格做不到的,而你用另一种风格做不到的。

因为最后,在运行时,数组被创建并且它的槽被分配。

实际上只是为了让您更轻松地编写更易于人类读者理解的源代码!

嗯,当然有一件事:花括号解决方案使您无法提供“不够”的值。当您将数组创建和槽初始化分开时,第二步可能会以某种方式出错(例如,忘记初始化先前创建的数组的最后一个元素)。

可以肯定的是:这是编译为 .class 然后使用 javap -c 反汇编后您会看到的:

示例 1 代码:

   0: iconst_5      
1: newarray int
3: astore_1
4: aload_1
5: iconst_0
6: bipush 10
7: iastore

和示例 2:

   0: iconst_4      
1: newarray int
3: dup
4: iconst_0
5: bipush 34
7: iastore

如您所见:字节码指令完全相同(减去您插入数组的不同值)

关于java - 创建数组对象和用花括号分配数组有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43832008/

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