可能重复:
通过引用传递和通过值传递之间有什么区别
Java是通过引用传递的吗?
我不理解java中这种按值传递和按引用传递的概念。有人能用蹩脚的话解释我吗。。。在阅读了许多文章之后,我仍然不理解它。
Java只使用传递值。就是这样。
http://stackoverflow.com/search?q=[java]+pass+by+value
我可以尝试一个外行对一般原理的解释,但我不太使用Java,所以可能会有一些问题。
好的,所以当你把一个变量传递到一个函数/子例程/方法中时,你有这两个选择。
-
传递值:您的变量将被复制,两个变量将独立存在,一个在函数范围内,另一个在调用范围内。一旦函数完成,前者将不存在,因此后一个变量将不会更改。这也被称为"传递副本"。
-
通过引用传递:不复制变量。所传递的只是对原始变量(在调用范围中)位置的引用。因此,如果被调用的函数修改了变量,即使在函数返回到调用范围后,它也会持续存在。
通过引用通常更有效,尤其是对于大变量。然而,函数设计原则指出,应该避免使用引用值来返回函数的结果。
如果需要澄清,请告诉我!