什么时候用Java初始化数组?

时间:2012-11-09 15:38:26

标签: java arrays performance

当我写这个

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

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

2 个答案:

答案 0 :(得分:8)

创建了数组which are objects in Java。这只能在运行时发生。

请注意,许多对象是在Java程序中创建的,只有在VM本身初始化后才会创建对象创建。一个静态数组初始化不会给你的表现带来明显的负担。

如果您不更改数组且有许多实例,请务必将其声明为静态:

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

还要注意与静态编译数组有什么重要区别:java数组是可变的。您无法更改其长度,但可以更改其元素(或使其无效)。 java数组,即使是最终的静态,也不是真正的常量。

答案 1 :(得分:5)

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

根据Java Language Specification

  

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

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