小编Kar*_*ars的帖子

了解Java中的静态变量初始化

public class InstanceBuilder {

    private static final InstanceBuilder INSTANCE = new InstanceBuilder();

    private static String name = null;

    private InstanceBuilder() {
        System.out.println("Setting cons()");
        name = "Testing";
    }

    public static String getName() {
        return name;
    }
}

public class Driver {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("value is " + InstanceBuilder.getName());
    }

}
Run Code Online (Sandbox Code Playgroud)

输出:

Setting cons()
value is null
Run Code Online (Sandbox Code Playgroud)

为什么它打印值,null即使我static在构造函数中设置了变量并按预期调用它.如果我尝试在构造函数中打印,它是打印Testing,但如果我从public static方法调用,它是null.我知道如果我改变它INSTANCE.name,它的工作原理.但我想理解为什么如果我直接访问static变量它不起作用,因为应该共享相同的副本.我在这里缺少什么?

java

5
推荐指数
1
解决办法
1239
查看次数

标签 统计

java ×1