2013-07-05 45 views
0

Java严格按照价值传递......我仍然对这个概念感到困惑。 我已经通过许多网站得到这个答案,但我无法找到任何好的理由。 有什么合适的原因为什么Java不通过引用传递?原因:为什么java不通过引用传递?

+3

你在期待什么水平的答案?这是一个理论问题吗?你想知道这个设计背后的推理吗? –

+1

此问题之前已被询问: http://stackoverflow.com/questions/5298421/why-doesnt-java-support-pass-by-reference-like-c – JREN

+0

指针和取消引用,其中最不直观的部分在C++中,java通过value传递一个引用,通过引用解决了C++传递的几乎所有用例,同时避免了所有的混淆。 –

回答

2

reference variable的值是Java中的“地址”。当你将一个引用变量传递给一个方法时,一个新的引用变量被放置在栈上,并且传入的引用变量的值的副本被用来初始化新的本地引用变量的值,就像任何基本类型一样。

这是pass by value的经典定义。

备注:虽然您可以将该参考视为内存地址,但事实并非如此。底层机制使得它在逻辑上起作用,就好像它一样。

SHORT VERSION:引用是简单变量,就像其他基本类型一样,用于将参数传递给方法。一旦过去,他们可以做什么显然是不同的。