1. 程式人生 > >java引數傳遞,引用還是拷貝

java引數傳遞,引用還是拷貝

   public class Foo{

        public static void main(String [] args){

         StringBuffer a = new   StringBuffer("G");

        StringBuffer b = new   StringBuffer("H");

        operate(a,b);

      System.out.printlen(a+","+b)

    }

  private static void operate(StringBuffer x, StringBuffer y){

     x.append(y);

    y=x;

  }

}

輸出 GH,H;

 java 都是拷貝傳遞(也就是所為的值傳遞)a的引用變數將自己的儲存單元的內容傳給了operate()方法的x的變數

也就是將實體物件的地址傳給了x變數,在operate()方法中對x的一切操作都是針對x所指向的這個儲存單元。

(x是StringBuffer值的一個引用副本)

Java 程式語言只有值傳遞引數-----當一個物件例項作為一個引數被傳遞到方法中時,引數的值就是該物件的引用一個副本。指向同一個物件,物件的內容可以在被呼叫的方法中改變,但物件的引用(不是引用的副本)是永遠不會改變的。