java引數傳遞,引用還是拷貝
阿新 • • 發佈:2019-01-27
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
程式語言只有值傳遞引數-----當一個物件例項作為一個引數被傳遞到方法中時,引數的值就是該物件的引用一個副本。指向同一個物件,物件的內容可以在被呼叫的方法中改變,但物件的引用(不是引用的副本)是永遠不會改變的。