Difference between static and final static

static :我们都知道被static 修饰的变量都是静态变量,对于静态变量在JVM中存在于常量池中,常量池一般在perm heap 中. 对于static 变量的初始化是在类构造器clinit中。

public class A {
	
	public String name="peter";
	public static final int age=100;
	public static int salary = 10000;
	
	static {
		System.out.println("init static block");
	}
}

 

public class Test {
	public static void main(String[] args) {
//		System.out.println(A.age);
		System.out.println(A.salary);
	}
}
result :
init static block
10000

  

 

final static :被final修饰的变量一旦初始化其值或引用都不能修改,final static基本类型的变量的初始化是在类初始化的准备阶段。引用类型的变量初始化也是在类构造器clinit中

public class Test {
	public static void main(String[] args) {
		System.out.println(A.age);
//		System.out.println(A.salary);
	}
}
result :
100

 

你可能感兴趣的:(static)