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方法,不允許子類重寫該方法.

               

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章