当我写这个
String[] fruits = {"Apple", "Pear"};
我希望在编译时创建数组和字符串,就像C中的类似代码一样。这是正确的吗?数组及其内容通常是在编译时还是在运行时创建的?
答案 0 :(得分:8)
创建了数组which are objects in Java。这只能在运行时发生。
请注意,许多对象是在Java程序中创建的,只有在VM本身初始化后才会创建对象创建。一个静态数组初始化不会给你的表现带来明显的负担。
如果您不更改数组且有许多实例,请务必将其声明为静态:
static String[] fruits = {"Apple", "Pear"};
还要注意与静态编译数组有什么重要区别:java数组是可变的。您无法更改其长度,但可以更改其元素(或使其无效)。 java数组,即使是最终的静态,也不是真正的常量。
答案 1 :(得分:5)
数组是java中的特殊对象。因此,它们将在运行时创建。
在Java编程语言中,数组是对象(§4.3.1),是动态创建的,可以分配给Object类型的变量(§4.3.2)
JLS 15.10提供了有关数组创建表达式的更多信息。