Java的引用传递
在下面的代码中可以较为清楚的看到,首先创建StringBuffer对象,调用changeData()方法,传递创建好的sb对象,并在方法内部操作接收到的sb2对象:
public class Test01 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("Hello");
System.out.println("对象sb地址" + System.identityHashCode(sb));
System.out.println("初始化对象值:" + sb);
//java引用传递,传递的是对象的内存地址
changeData(sb);
System.out.println("传递对象后的对象值:" + sb);
}
private static void changeData(StringBuffer sb2) {
//sb2执行append操作,但sb2指向的地址还是sb,所以实际操作的还是原sb指向的对象
sb2.append(" World");
System.out.println("传递对象sb2地址" + System.identityHashCode(sb2));
}
}
执行结果:
-
对象sb地址1191747167
-
初始化对象值:Hello
-
传递对象sb2地址1191747167
-
传递对象后的对象值:Hello World
通过上述结果,我们可以得到如下解释: