Java堆栈偷看

Ric*_*kes 7 java stack data-structures

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

Stack.peek().setName("name");
Run Code Online (Sandbox Code Playgroud)

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

sta*_*ker 8

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


Jon*_*eet 8

通常,Java中的极少量代码会随意创建对象的副本.peek将返回堆栈顶部的引用 ...不要忘记对象首先不在堆栈中,只是引用.

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