gpt4 book ai didi

java - 谁触发原始类型的初始化?

转载 作者:行者123 更新时间:2023-11-29 07:37:34 25 4
gpt4 key购买 nike

我想知道谁/什么触发了 Java 中基本类型的初始化,例如:

public class A {
int primitive;
String nonPrimitive;

public static void main(String[] args) {
A newObject = new A();
}
}

因此,当我们创建A 的新实例时,A 类的默认构造函数将被调用。 String extends Object,因此调用 Object 的构造函数并创建 nonPrimitive var 并具有 null 值。

但是primitive变量是什么情况呢?如果它由默认值 0 的 VM 直接初始化并且新 newObject 的创建触发了它?或者它是在创建 newObject 之前创建的?

最佳答案

创建对象时,会创建其字段。

new A();

根据 JLS 4.12.5. Initial Values of Variables 中的说明,字段已初始化,每个字段都有其默认值:

For all reference types (§4.3), the default value is null.

这就是为什么 String 被初始化为 null 的原因。查看完整表格以查看其他值(是的,整数类变量默认设置为 0)。

另见 12.4.1. When Initialization Occurs , 它详细解释了初始化类时发生的情况。

关于java - 谁触发原始类型的初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33855745/

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