1. 程式人生 > >Java 中的引數傳遞

Java 中的引數傳遞

       Java 中的引數傳遞方式是傳遞值, 也稱為”值傳遞”。 當引數變元是一個簡單型別時,值傳遞意味著這個方法不能改變引數變元的值,即方法中變數所做的改變在方法外都是不可見的,也可以說不起作用; 當引數變元是一個引用型別時, 值傳遞意味著這個方法不能改動這個物件的引用,但是方法可以呼叫該物件的方法來修改該物件中可訪問的變數。
示例

public class StringTester {
    public static void changeString(String s, StringBuffer sb) {
        s += " by Definition"
; sb.append(" by Definition"); } public static void main(String args[]) { String string = new String("Java"); StringBuffer buffer = new StringBuffer("java"); changeString(string, buffer); System.out.println("String after method call: " + string); System.out.println("StringBuffer after method call: "
+ buffer); } }

輸出
這裡寫圖片描述

說明
       在方法changeStrings中,字串”by Definition” 和 s 拼接起來後,產生一新字串”Java by Definition”。於是變數s指向這個新字串,這是由String類的性質決定的, 即要改變一個String物件的值,就是建立一個新的字串賦給它,但是這種改變只是發生在方法內部,在方法外是不可見的,這是由”值傳遞”的性質決定的。
       另一方面,變數sb使用append方法修改了所指向資料的內容,”by Definition” 被加入其後,但是sb這個引用的值並未發生改變,因為sb和buffer仍然指向原來的地址,而它們指向的物件的值的改變是方法外可見的。