【问题标题】:Pass by value in Java [duplicate]在Java中传递值[重复]
【发布时间】:2011-01-27 00:41:50
【问题描述】:

可能的重复:
Does Java pass by reference?
Is Java pass by reference?

嘿,

Java 是否真的通过value 传递所有内容,而我们不能通过reference 传递某些内容?

谢谢。

【问题讨论】:

  • 我敢打赌,如果您在 Google 中输入了准确的短语,您会找到大量链接来回答您的问题。
  • Biziclop:Java 总是按值传递。即使是原始人。更改传递给方法的原始值在方法返回后不会保留效果。
  • @Marc W 嗯嗯,不传值的意思是把副本压入栈吗?
  • @Biziclip:不一定。这意味着在方法返回后对值的更改不会消失。 Java 将对象视为引用,因此对象的地址是按值传递的,但您仍然可以修改其字段。您只是不能将参数完全重新分配给新对象并在返回后保留它。
  • 嗯,显然通过引用传递并不意味着传递引用。你生活和学习。 :)

标签: java reference arguments


【解决方案1】:

天哪,不能再问了。 Java 是按值传递的 - 总是,在 所有 情况下。就是这样。

这是一个 reference 引用詹姆斯·高斯林的话,他应该对任何人都足够权威:

来自 Java 的作者:“有 正是一种参数传递模式 Java - 按值传递 - 这有帮助 保持简单。”Java 编程语言,第 2 版。由肯 阿诺德和詹姆斯高斯林,部分 2.6.1,第 40 页,第 3 段。

【讨论】:

  • 是吗?那我一定是误解了按值传递是什么意思。
  • 很明显,可以再问一次:)但我100%同意你,搜索会快得多。
  • 如果我可以为 Gosling 的报价加倍投票,我会的。
【解决方案2】:

Java 传递您正在传递的对象的引用值和原始类型的简单值。 请参阅以下讨论: Is Java pass by reference?

【讨论】:

    【解决方案3】:

    Java 默认按值传递原语,所有类型的对象引用都按值传递。有关详细信息,请参阅http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.3.1

    【讨论】:

      猜你喜欢
      • 2011-12-23
      • 1970-01-01
      • 2014-11-29
      • 2014-09-10
      • 2013-12-02
      • 2012-03-12
      • 2013-09-15
      • 2016-04-22
      • 2016-12-30
      相关资源
      最近更新 更多