【问题标题】:reason: why java is not pass by reference? [duplicate]原因:为什么java不通过引用传递? [复制]
【发布时间】:2013-07-05 09:57:00
【问题描述】:

Java 是严格按值传递的。我仍然对这个概念感到困惑。 我已经浏览了许多网站以获得答案,但我找不到任何好的理由。 Java不通过引用传递有什么正当理由吗?

【问题讨论】:

  • 您希望得到什么级别的答案?这是一个理论问题吗?你想知道这个设计背后的原因吗?
  • 这个问题之前有人问过:stackoverflow.com/questions/5298421/…
  • 指针和解引用到目前为止,C++ 中最不直观的部分,java 的按值传递引用解决了 C++ 的按引用传递的几乎所有用例,同时避免了所有混淆。

标签: java pass-by-reference pass-by-value


【解决方案1】:

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

这就是pass by value的经典定义。

注意:虽然您可以将引用视为内存地址,但事实并非如此。底层机制使它在逻辑上表现得好像它是一样的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-22
    • 2015-12-29
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多