JVM initialization phase final constants

1, create FinalTest class, which has a final constant x

class FinalTest{

    public static final int x = 3;

    static {
        System.out.println("FinalTest static block");
    }
}

public class MyTest8 {

    public static void main(String[] args) {
        System.out.println(FinalTest.x);
    }
}

  Then print fianl constants in the Main method. Print results

3

  

2, then remove the final,

class FinalTest{

    public static  int x = 3;

    static {
        System.out.println("FinalTest static block");
    }
}

public class MyTest8 {

    public static void main(String[] args) {
        System.out.println(FinalTest.x);
    }
}

  Print results:

FinalTest static block
3

  

 

3, will be changed randomly generated constants fianl

class FinalTest{

    public static  int x = new Random().nextInt(3);

    static {
        System.out.println("FinalTest static block");
    }
}

public class MyTest8 {

    public static void main(String[] args) {
        System.out.println(FinalTest.x);
    }
}

  Print results

FinalTest static block
1

  

Guess you like

Origin www.cnblogs.com/linlf03/p/10994604.html