直接上代碼:
/**
* 問: 使用final關鍵字 修飾一個變量時,是指引用變量不能變,還是指引用變量所指向的對象的内容不能變?
*
* 答: 使用final關鍵字 修飾一個變量是,是指引用變量不能變,引用變量所指向的對象的内容是可以變的。
*
* 驗證思路:
* 在java中每一個對象都有自己獨一無二的哈希編碼,根據這個編碼就可以找到對應的對象。
* 是以,根據哈希編碼你就可以确定一個唯一的對象。
*
*/
public class HomeTest {
public static void main(String[] args) {
// StringBuilder 線程不安全 但速度快
final StringBuilder sb = new StringBuilder("驗證");
System.out.println("sb=" + sb);
System.out.println("sb的哈希編碼hashcode=" + sb.hashCode());
// 為sb追加内容 驗證變量所指向的對象的内容是否可變
sb.append("成功");
System.out.println("追加後的sb=" + sb);
System.out.println("追加後的sb的哈希編碼hashcode=" + sb.hashCode());
//為sb 指向一個新的對象 驗證引用變量是否可變
//sb=new StringBuilder("nihao");該行會報錯 是以引用變量不可變
/*
* 經過驗證 發現 sb的内容發生了改變,但是sb的哈希編碼沒有變化,說明是同一個對象。
*
* 總結:使用final修飾的變量,如果是基本資料類型的變量,則其數值一旦在初始化之後便不能更改。
* 如果是引用類型的變量,則在對其初始化之後不能指向一個另一個對象。
* 即 引用變量不可變,引用變量指向的對象的内容可變。
*/
}
}