Navy1228 2022-05-10 14:36 采纳率: 44.8%
浏览 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日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大