在學習Java語言時,常常聽到人家說mutable和immutable,到底是甚麼意思呢?如果從字面上的意思來說的話,mutable代表可改變的,immtable代表不可改變的,還是很抽象,對吧!,就讓我們用實例來說明吧!
有四個名詞要認識mutable value,immutable value,mutable reference,immutable reference,就讓我一一來說明吧!
1. mutable reference point to immutable values:
舉例來說:
String s1="a";
這個宣告代表我們創建一個名叫s1的reference,它指向一個String type的物件,名為"a", 而reference指向可以改變,但物件的值不能改變
所以以下code的輸出結果會是a,因為s2已經指向了"a"這個物件,而物件的值不能被改變
String s1="a";
String s2=s1;
s1="b";
System.out.println(s2);
2. immutable reference point to mutable values
final StringBuilder s= new StringBuilder("hello");
final 在這裡的用法和C++ const(點擊可參考我之前文章)類似,意思就是指向不可變,也就是s永遠都要指向"hello"這個物件,但我們可以改變"hello" 這個 StringBuilder 類型物件的值
總結:
mutable value: 值可以改變
immutable value: 值不能改變
mutable reference: 可以指向其他地方
immutable reference: 不可以指向其他地方
參考資料:
1. edx course: MITx: 6.005.1x Software Construction in Java
2. https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
作者已經移除這則留言。
回覆刪除code 輸出的結果會是 a
回覆刪除感謝您的指正 我馬上改XD
刪除