相关疑难解决方法(0)

什么时候进行静态类初始化?

何时初始化静态字段?如果我从不实例化一个类,但是我访问一个静态字段,是否所有静态块和私有静态方法用于实例化那个时刻调用的私有静态字段(按顺序)?

如果我调用静态方法怎么办?它是否也运行所有静态块?方法之前?

java static initialization

107
推荐指数
2
解决办法
7万
查看次数

以什么顺序执行的类中的静态块和静态变量?

可能重复:
Java静态类初始化

为什么字符串变量在初始化块中更新而不是整数(即使先写入块)

class NewClass
{
    static 
    {
       System.out.println(NewClass.string+" "+NewClass.integer);
    }

    final static String string="static";
    final static Integer integer=1;

    public static void main(String [] args)//throws Exception
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

我的输出是

static null
Run Code Online (Sandbox Code Playgroud)

PS:还注意到只有当我插入final修饰符时,字符串变量初始化才会发生在块之前.为什么会这样?为什么不是整数?我已经将它声明为最终静态

java static final

16
推荐指数
2
解决办法
1万
查看次数

为什么由返回另一个静态变量的方法调用初始化的静态变量保持为空?

我根本不理解以下代码的执行流程:

class Test {
    static String s1 = getVal();
    static String s2 = "S2";

    private static String getVal() {
        return s2;
    }

    public static void main(String args[]) {
        System.out.println(s2); // prints S2
        System.out.println(s1); // prints null
    }
}
Run Code Online (Sandbox Code Playgroud)

它应该S2在第二个println声明打印.我更感兴趣的是理解为什么会发生这种情况而不是解决方案.

java static-variables

16
推荐指数
2
解决办法
467
查看次数

Java:为什么放置静态变量很重要?

以下示例定义了2个静态变量。变量1(myBoolean1)在MySingletonExample(实例)变量上方定义。

变量2(myBoolean2)在MySingletonExample(实例)变量下定义。

两个变量都设置为true,但是只有1个变量(myBoolean1)在显示时显示正确的值。

public class MySingletonExample 
{

    //static volatile boolean  myBoolean1 = false;
    static boolean  myBoolean1 = false;

    private static volatile MySingletonExample instance = new MySingletonExample();

    //static volatile boolean  myBoolean2 = false;
    static boolean  myBoolean2 = false;


    private MySingletonExample()
    {
        myBoolean1 = true;
        myBoolean2 = true;
    }

    protected static MySingletonExample getInstance() 
    {
        System.out.println("myBoolean1 = " + myBoolean1);
        System.out.println("myBoolean2 = " + myBoolean2);
        return instance;
    }


    public static void main(String[] args)
    {
        MySingletonExample.getInstance();
        System.out.println("---------------------------");
        MySingletonExample.getInstance();
    }

}
Run Code Online (Sandbox Code Playgroud)

执行时,这是输出。

myBoolean1 …

java static

1
推荐指数
2
解决办法
108
查看次数

标签 统计

java ×4

static ×3

final ×1

initialization ×1

static-variables ×1