为什么 引用作为函数的参数传入,但是函数结束后原来的引用却没有改变

来源:7-19 中序遍历下一个结点_代码

John_Chentao

2017-12-14

public TreeNode getFirst(TreeNode node) {
		if(node==null) {
			return node;
		}
		while(node.getLeft()!=null) {
			node = node.getLeft();
		}
		return node;
	}

但是另一个例子中引用的内容改变了

public static void main(String[] args) {
		// TODO Auto-generated method stub

		StringBuffer sb = new StringBuffer("Hello ");
		System.out.println("Before change, sb = " + sb);
		changeData(sb);
		System.out.println("After changeData(n), sb = " + sb);
	}

	public static void changeData(StringBuffer strBuf) {
		strBuf.append("World!");
	}
}


写回答

1回答

ccmouse

2017-12-14

第一个tree中,node本来所引用(指向)的对象是哪个没有变,而且里面内容也没有变,只是node在函数里被引用(指向)了别的对象。第二个stringbuffer里,sb本来所引用(指向)的对象是哪个也没有变,但是它的内容变了。
你可能需要再参考下值传递与引用传递方面的基础知识。

0
1
John_Chentao
非常感谢!
2017-12-14
共1条回复

Google面试官亲授-Java面试新手尊享课

为面试新手量身定制的Java面试尊享课,解锁“鲤鱼跃龙门”的妙招

2853 学习 · 180 问题

查看课程