2013-02-09 110 views
2
public class Test 
{ 
    static void operate(StringBuffer x, StringBuffer y) 
    { 
     x.append(y); 
     y=x; 
    } 

    public static void main(String args[]) 
    { 
     StringBuffer x=new StringBuffer("Sun"); 
     StringBuffer y=new StringBuffer("Java"); 

     operate(x,y); 
     System.out.println(x+","+y); 
    } 
} 

他的版畫:SunJava,爪哇賦值運算符不工作

任何人都可以請解釋爲什麼它被印像,而不是SunJava,SunJava?

回答

1

您將對y中StringBuffer的引用傳遞給您的操作函數。然後在操作中,您更改參考,但不是對象。在調用操作之後,您的主函數仍然會引用它最初分配的StringBuffer。

+0

謝謝。得到那部分。但爲什麼主函數中的x被操作函數中的追加變爲了? – 2013-02-09 10:53:11

+0

將x看作是指向StringBuffer的指針。追加到x時,實際上是在更改x所指向的對象的狀態。將另一個對象分配給x時,實際上是告訴x指向不同的對象。 – verhage 2013-02-09 11:05:43

+0

在傳遞對象的情況下,它會發生,但如果我通過傳遞,那麼主要值保持不變。 – 2013-02-09 15:22:50