面試題:使用final關鍵字修飾一個變量時,是引用不能變,還是引用的對象不能變?

/*
 * 問題:使用final關鍵字修飾一個變量時,是引用不能變,還是引用的對象不能變
 * 答:
 * 使用final關鍵字修飾一個變量時,是指引用變量不能變,引用變量所指向的對象中的內容還是可以改變的。
 */
public class Test10 {
	// final修飾基本類型的變量
	public static final char CHAR = '中';
	// final修飾引用類型的變量
	public static final StringBuffer a = new StringBuffer("StringBuffer");
 
	public static void main(String[] args) {
		// 編譯報錯,引用不能變
		// a = new StringBuffer("hehe");
		// 引用變量所指向的對象中的內容還是可以改變的
		a.append("xxx");
 
	}
 
	public static int method1(final int i) {
		// i = i + 1;// 編譯報錯,因爲final修飾的是基本類型的變量
		return i;
	}
 
	// 有人在定義方法的參數(引用變量)時,可能想採用如下的形式來阻止方法內部修改傳進來的參數對象,
	// 實際上,這是辦不到的,在該方法內部任然可以增加如下代碼來修改參數對象
	public static void method2(final StringBuffer buffer) {
		buffer.append("buffer");// 編譯通過,因爲final修飾的是引用類型的變量
	}
 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章