论坛首页 入门技术论坛

面试一道题 关于StringBuffer

浏览 1602 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-30   最后修改:2009-03-30
OO
public class Test {
	public static void main(String[] args) {
		StringBuffer a = new StringBuffer("one");
		StringBuffer b = new StringBuffer("two");
		swap(a,b);
		System.out.println("a is "+a+"\nb is "+b);

	}

	static void swap(StringBuffer a,StringBuffer b) {
		a.append(" more ");
		b=a;
	}
}

问:打印结果?
正确的打印结果事是:
引用
a is one more
b is two

因为传递给swap方法的两个参数是引用即a,b在内存的地址。
a.append()方法其实是对a地址对应的值进行了改变。
同样b=a,也改变了b的值,但是并没有返回,对于main方法里的b,它并不知道b的值已近改变,所以打印出来的还是b原来的值。
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics