Java变量初始化问题



class AMMM

{  

    public final static  int CHANG = 10;//注意并不是修饰符为final+static的域就是常量,

                                        //比如:final static int A = Random.nextInt();它并非编译期常量

    public AMMM()//(1)

    {

        i = 100000;

    }

   

    {//(2)

        i = 1;

        mu = 2;

    }

   

    public static int i = 100;// (3)

    public int mu = 0;//(4)

   

    static//(5)

    {

        i = 3;

    //  mu = 100;错误,static块中不可访问非类变量

        System.out.println("静态初始化块");

    }  

}

 

public class Solution {

   public static void main(String[] args)

   {

       //不建立对象,取决于初始语句(3)和static语句(5)的前后顺序,最后都会被提取到<clinit>类构造函数中

       //注意这里初始化块没有作用

       System.out.println(AMMM.i);//输出3

       //建立对象

       System.out.println(new AMMM().i);//输出10000

       //所欲初始化(4)和初始化快(2)都会被提取到<init>构造函数中,按代码中的顺序进行执行,其其执行都会先于(1)中够赞函数的语句

       System.out.println(new AMMM().mu);//输出0

       System.out.println(AMMM.CHANG);//注意常数调用并不会对类进行初始化

   }

}


你可能感兴趣的:(Java变量初始化问题)