首先我确实调查了这个。我在这里发现了同样的问题,但关于 C++:What happens to unused function return values?
我的兴趣是 Java(尽管线程确实很有趣)。
普遍的共识是没有任何事情真正发生,如果以后有任何事情被覆盖。与 Java 的线程有什么区别吗?
(链接将不胜感激,因为我可以想象可能会发生什么,但想要一些证明和细节。另外,我正在寻找比“它没有设置为变量”更深入的内容)
最佳答案
编译器发现它没有被使用,只是将(返回)堆栈上的值保留为未分配,也就是将其删除。如果您分配它但不使用它,它会一直存在,直到不再使用此引用为止。
请参阅随附的屏幕截图。 Eclipse 和字节码插件。
在L0下,可以看到存储了concat调用的返回值(ASTORE 1)。在 Java 中未使用或分配的 L1 下的相同调用仅使用 POP 处理,也就是从堆栈中删除并消失。
希望对您有所帮助。
关于java - 未使用的返回值会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29063307/