【问题标题】:Java stack peekJava 堆栈一瞥
【发布时间】:2011-08-10 04:53:55
【问题描述】:

大家好,想知道关于 Java 堆栈的一些事情。 peek() 是返回对堆栈顶部的实际对象的引用还是对象的副本?例如,如果我运行以下代码:

Stack.peek().setName("name");

这会修改当前位于堆栈顶部的对象的 name 字段,还是修改为所有字段具有相同值的完全不同的对象?

【问题讨论】:

标签: java data-structures stack


【解决方案1】:

因为 peek 返回一个对象的引用,所以它会被修改。

【讨论】:

    【解决方案2】:

    一般来说,Java 中很少有代码会随意创建对象的副本。 peek 将返回堆栈顶部的 reference...不要忘记 objects 首先不在堆栈上,只是参考文献。

    因此,在您的示例中,您确实会修改堆栈上的 reference 所引用的对象的名称。

    【讨论】:

      【解决方案3】:

      绝对是参考。它会更改名称。

      【讨论】:

        【解决方案4】:

        http://download.oracle.com/javase/6/docs/api/java/util/Stack.html,我看不出它为什么会返回副本,所以我真的认为它会改变原件

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-27
          • 2012-10-16
          • 2012-02-06
          • 1970-01-01
          • 1970-01-01
          • 2017-08-12
          • 1970-01-01
          • 2012-03-27
          相关资源
          最近更新 更多