1. 程式人生 > >static和final的用法

static和final的用法

 一直以來,總說static修飾的變數是引用同一塊記憶體,final修飾的變數"不可變"",沒有什麼體會,就自己寫了方法,測了一把

class Test2{
	public static User user;
	
	public final User user2=new User("zuoqi2",1);
		
	public static final User user3=new User("zuoqi3",1);
	
	

	public void test() {
		user=new User();
		user.setAge(1);
		user.setAge(2);
		
		user2.setAge(1);
		user2.setAge(2);
		
		user3.setAge(1);
		user3.setAge(2);
	}
	
	public static void main(String[] args) {
		Test2 t=new Test2();
		t.test();
		t.user=new User();
		
		System.out.println(user3.getAge());
		user3.setAge(3);
		System.out.println(user3.getAge());
		
		Test2 t2=new Test2();
		t2.user=new User(); 
		System.out.println(t.user ==t2.user);
		
		System.out.println(t.user2 ==t2.user2);
		
		System.out.println(t.user3 ==t2.user3);
		
		
		
	}
}

輸出結果為

結論:

1.static作用於某個欄位,一個static欄位對每個類來說只有一份儲存空間,而非static欄位是每個物件有一份儲存空間,故而無論類例項化幾次,該變數都是相同的.

       2.final欄位

    當欄位是基本型別時,意味著這是一個永不改變的編譯時常量,一個在執行時被初始化的值,你不希望它改變。

    當欄位是引用型別時,表示初始化時佔據一塊記憶體空間,但是隻允許初始化一次.

               3.final修飾入參,表示在該函式內,不允許改變該變數的引用.

               4.final方法,不允許子類重寫該方法.