嘿,所有人都想知道Java Stacks。 peek()是否返回对堆栈顶部的实际对象或对象副本的引用?例如,如果我运行以下代码:
Stack.peek().setName("name");
这会修改当前位于堆栈顶部的对象的名称字段,还是修改所有字段具有相同值的完全不同的对象?
答案 0 :(得分:8)
由于peek返回对象的引用,因此它将被修改。
答案 1 :(得分:8)
一般来说,Java中很少的代码可以随意创建对象的副本。 peek
将返回位于堆栈顶部的引用 ...不要忘记对象首先不在堆栈中,只有参考文献。
因此,在您的示例中,您确实会修改堆栈中引用所引用的对象的名称。
答案 2 :(得分:2)
绝对是参考。它会改变名称。
答案 3 :(得分:1)
在http://download.oracle.com/javase/6/docs/api/java/util/Stack.html我没有看到为什么它会返回副本的证据,所以我真的认为它会改变原来的