Navy1228 2022-05-10 14:36 采纳率: 43.3%
浏览 36
已结题

String两种对象创建方式,内存机制

请问这个内存图画的对吗?

img

我看其他的帖子说,堆中的数据是一个对象,方法区中的数据又是一个对象,即String new()很有可能会创建两个对象,一个堆中,一个方法区中,请问是这样的说法吗?
String对象.hashCode()打印出来的是方法区中对象的hash值吗?而==比较符,比较的是栈中对象的地址吗(如果有的话)
如何打印String new在堆中对象的hash值(即value的地址or哈希值)
String str = "hello"我通过断点deBug,发现并没有进入构造器(Force Step Into),直接跳过这行代码了,请问这种方式是怎么创建对象的

img

  • 写回答

1条回答 默认 最新

  • 沸腾的冰川 新星创作者: Java技术领域 2022-05-10 14:43
    关注

    看一下这篇文章,介绍的比较详细 https://blog.csdn.net/xl_1803/article/details/114390731
    String str = "hello",这种是通过字面量的方式创建的String对象,是虚拟机创建的当然不会进入构造方法

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月31日
  • 创建了问题 5月10日