gpt4 book ai didi

java - 一个类的两个对象是否引用相同的内存位置?

转载 作者:行者123 更新时间:2023-12-01 20:12:03 25 4
gpt4 key购买 nike

我开始学习一些 Java,并且阅读了很多有关 JVM 如何分配内存以及如何使用垃圾收集器释放这些内存的内容。

我一直无法找出的一件事是,如果我创建两个完全相同的新对象,它们会引用内存中的相同位置吗?与字符串池的工作原理类似。

最佳答案

One thing that I have been unable to find out is if I create two new objects which are exactly the same would they refer to the same location in memory? Similar to how the String Pool works

答案是:

  1. 如果您使用 new 创建两个对象关键字,它们永远不会指向相同的内存位置。
  2. 这适用于 String对象也是如此。如果您创建两个 String使用 new 的对象,对这些对象的两个引用将指向两个不同的内存位置。
  3. String文字是一种特殊情况。一个String文字存储在String中文字池。那么两个String引用String文字将始终指向相同的内存位置。
  4. Java 中还有其他特殊情况,例如 Integer类(class)。例如Integer a = 100; Integer b = 100; System.out.println(a==b);这打印 true 因为 Integer -128 到 127 之间的值由 JVM 缓存。 (-128 到 127 之间的值由所有 JVM 实现缓存。缓存超出此范围的值取决于各个 JVM 实现)

关于java - 一个类的两个对象是否引用相同的内存位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31098107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com