gpt4 book ai didi

Java 构造函数与内联字段初始化

转载 作者:行者123 更新时间:2023-12-01 06:23:16 24 4
gpt4 key购买 nike

如果我有以下代码:

public class Test {

private int x = 5;
private static int y = 5;

public Test() {
x = 10;
y = 10;
}
}

我想知道在这两种情况下它实际上会首先分配 5,然后用 10 更新它,换句话说,没有必要在内联和构造函数中初始化变量,因为它实际上具有初始化变量两次的效果?或者在 x (作为实例字段)的情况下,它是否只是将 x = 5 替换为 x = 10,因此甚至只运行 x = 10?

如果能知道反编译版本就好了。

最佳答案

I'm wondering in both cases will it actually initially assign 5, and then update this with 10

是的。构造函数将:

  1. 调用super()
  2. 执行任何内联初始化和匿名初始化 block 。
  3. 执行构造函数的其余部分。

这在 JLS #12.5-6 中有更详细的说明。 .

关于Java 构造函数与内联字段初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35421411/

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