final和static final修飾成員變量的區別

final稱爲常量,static final稱爲全局常量。code

成員變量是隨類初始化或對象初始化而初始化的。當類初始化的時候,會給類變量分配內存;當對象初始化的時候,會給實例變量分配內存。對象

  1. final修飾成員變量能夠在申明的時候指定初始值,還能夠在構造器或者在普通初始化塊中指定初始值。內存

  2. static final修飾的變量能夠在申明的時候指定初始值,也能夠在靜態初始化塊中指定初始值。class

由此能夠看出final修飾的成員變量的值能夠在同一類的不一樣對象中改變,而static final修飾的成員變量在同一類不一樣對象中不能改變。變量

例子:方法

public class FinalDemo {

    private static final String A;
    private static final String A1 = "static final直接賦值";

    private  final String B;
    private  final String B1 = "final直接賦值";

    static {
        A= "靜態初始化塊初始化";
    }

//    {
//        B= "初始化塊初始化";
//    }

    public FinalDemo(String b) {
        B = b;
    }

    public static void main(String[] args) {
        FinalDemo demo1 = new FinalDemo("構造方法初始化demo1");
        System.out.println(demo1.B);
        FinalDemo demo2 = new FinalDemo("構造方法初始化demo2");
        System.out.println(demo2.B);

        System.out.println(FinalDemo.A);
        System.out.println(FinalDemo.A1);

    }

}
運行結果:
構造方法初始化demo1
構造方法初始化demo2
靜態初始化塊初始化
static final直接賦值
相關文章
相關標籤/搜索