5

当我写这个

 String[] fruits = {"Apple", "Pear"};

我希望在编译时创建数组和字符串,就像 C 中的类似代码一样。它正确吗?数组及其内容通常是在编译时还是在运行时创建的?

4

2 回答 2

8

创建数组,它们是 Java 中的对象。这只能在运行时发生。

请注意,许多对象是在 Java 程序中创建的,并且您的对象创建仅在 VM 本身初始化之后发生。一个静态数组初始化不会给你的表演带来明显的负担。

如果您不更改数组并且您有很多实例,请务必将其声明为 static :

static String[] fruits = {"Apple", "Pear"};

还要注意与静态编译数组的一个重要区别:java 数组是可变的。你不能改变它的长度,但你可以改变它的元素(或使它们无效)。java 数组,即使是最终的静态数组,也不是真正的常量。

于 2012-11-09T15:39:06.167 回答
5

数组是java中的特殊对象。因此,它们将在运行时创建。

根据Java 语言规范

在 Java 编程语言中,数组是对象(第 4.3.1 节),是动态创建的,并且可以分配给 Object 类型的变量(第 4.3.2 节)

JLS 15.10提供了有关数组创建表达式的更多信息。

于 2012-11-09T15:39:55.483 回答