gpt4 book ai didi

java静态实例字段和构造函数

转载 作者:行者123 更新时间:2023-12-02 09:44:24 25 4
gpt4 key购买 nike

在具有静态实例字段的 Java 类中,构造函数是在每次访问字段时调用,还是仅在第一次访问时调用?我在构造函数中初始化了静态字段,并且想知道这是否会导致速度变慢,因为这些字段在每次访问时都会被初始化。

最佳答案

I initialize the static fields in the constructor,

不要。切勿在构造函数内初始化静态字段。 static 字段不与类的任何实例关联。它与类(class)息息相关。该变量只有一个副本,可在所有实例中访问。因此,如果您在构造函数中初始化它,那么每次创建实例时,都会为每个其他实例重新初始化该字段。

您应该使用静态初始化器 block 来初始化静态字段,或者只是在声明的地方初始化它们。

class Demo {
private static int x; // Either initialize it here.

static { // Or use static initializer block
x = 10;
}
}

with static instance fields, is the constructor called every time the fields are accessed,

否。,静态字段是在 class 上访问的。它们在类加载时加载并初始化。然后您可以稍后在类名上修改它,在这种情况下,更改将对所有实例生效。因此,每当您访问静态字段时,构造函数都不会被调用。

事实上,即使访问实例字段,构造函数也不会每次都被调用。构造函数用于初始化新创建实例的状态一次。为了进一步访问和修改该字段,将不会调用构造函数

因此,每当您想要访问类的任何字段时,构造函数都不起作用。

关于java静态实例字段和构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545068/

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