Java堆栈偷看

时间:2011-04-21 10:16:07

标签: java data-structures stack

嘿,所有人都想知道Java Stacks。 peek()是否返回对堆栈顶部的实际对象或对象副本的引用?例如,如果我运行以下代码:

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

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

4 个答案:

答案 0 :(得分:8)

由于peek返回对象的引用,因此它将被修改。

答案 1 :(得分:8)

一般来说,Java中很少的代码可以随意创建对象的副本。 peek将返回位于堆栈顶部的引用 ...不要忘记对象首先不在堆栈中,只有参考文献。

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

http://download.oracle.com/javase/6/docs/api/java/util/Stack.html我没有看到为什么它会返回副本的证据,所以我真的认为它会改变原来的