new关键字实例化的字符串对象都保存在堆中,具体的可以这样理解吗?

new关键字实例化的字符串对象都保存在堆中,具体的可以这样理解吗?

new关键字实例化的字符串对象,字符串保存在常量池中,堆中保存字符串在常量池的地址

https://img1.sycdn.imooc.com//climg/64b1040509b75b5512460278.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,当使用new关键字后,会生成两个字符串对象。

1.存储字符串对象的变量,指向堆空间中的字符串对象。

2.堆空间中的对象,“内容”上指向常量池中的对象。

举个例子,代码“String s = new String("abc");”中,“s”变量存储的对象“new String("abc")”是存储在堆空间中的,但是参数“abc”也是一个对象,这个对象存储在常量池中。

祝学习愉快~

  • 王小east 提问者 #1

    1.存储字符串对象的变量,指向堆空间中的字符串对象。

    这个是存储在栈中的吗?

    2.堆空间中的对象,“内容”上指向常量池中的对象。

    堆空间中是会有2个对象,一个在堆中保存创建的对象,这个对象的内容指向在常量池中创建的第二个对象,这样理解可以吗?

    2023-07-14 16:57:56
  • 好帮手慕小蓝 回复 提问者 王小east #2

    同学你好~

    1.变量存储在栈空间中,但指向的对象在堆空间;

    2.堆空间中只有一个对象,对象指向常量池中的另一个对象。

    祝学习愉快~

    2023-07-14 17:12:39
  • 王小east 提问者 回复 好帮手慕小蓝 #3

    JDK1.8后,字符串常量池不是也在堆中吗,这样堆中不就有两个对象了吗?

    2023-07-14 17:15:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师