public class Foo {
2. public static void main (String [] args) {
3. StringBuffer a = new StringBuffer (「A「);
4. StringBuffer b = new StringBuffer (「B「);
5. operate (a,b);
6. system.out.printIn{a +「 」+b};
7. )
8. static void operate (StringBuffer x, StringBuffer y) {
9. x.append (y);
10. y = x;
11. }
12. }app
打印出來是AB Bpost
由於:AB B
變量a\b\x\y中存儲的是StringBuffer變量的引用而不是一個StringBuffer對象。根據非基本類型參數傳遞爲引用傳遞的規則,operate接收的參數只是StringBuffer對象的引用.所以能夠理解爲x、a都是指向同一個對象;b、y也是指向同一個StringBuffer對象,因此x.append(y)將致使x和a同指的StringBuffer對象改變(增長"B");而y=x只是讓變量y改變指向爲和x相同的StringBuffer對象,而y原來所指的對象並不會發生任何改變。對象
因此StringBuffer是引用傳遞傳遞的是地址blog
而String 雖然也是對象,但其實final類型的因此至關於值傳遞class