Java 中只有 值传递 跟C语言不一样 没有引用传递!(因为java中并没有指针的概念)
值传递过程:
1. 基本数据类型:这个就不用解释了,直接传递值,在函数里也能直接改变值。
2. 引用数据类型:进入方法,会拷贝一份对象的引用!
如果在函数中改变这个引用的指向,对原引用是没有作用的,只是改变了在方法中复制的那个引用的指向,当方法结束,原来的引用指向不会发生改变。
如果在函数中,通过这个复制的引用,改变对象的值,则是有用的。
public class foo { public static void main(String sgf[]) { StringBuffer a=new StringBuffer("A"); StringBuffer b=new StringBuffer("B"); operate(a,b); System.out.println(a+"."+b); } static void operate(StringBuffer x,StringBuffer y) { x.append(y);//改变了x指向对象的值 y=x;//只是改变了这个复制版本引用的指向 } }
输出AB.B