老师string可以创建对象具体原因是什么,str1指向内存空间是哪里

老师string可以创建对象具体原因是什么,str1指向内存空间是哪里

631027fc0001938308000360.jpg
老师string可以创建对象具体原因是什么
str1指向内存空间是哪里

正在回答 回答被采纳积分+1

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

1回答
好帮手慕小蓝 2022-09-01 13:25:04

同学你好,字符串String也是一般的引用类型,是可以通过new语句进行创建的。

以往的“String s = "ABC";”的形式,是创建一个包含了字面值“ABC”的对象,并且将对象存储在虚拟机内存的方法区中。

使用new语句的形式“String s = new String("ABC")”,是在虚拟机内存的堆空间中创建了一个类型为String的对象,并且将方法区中的字面值引用到这个对象中。

所以这两种形式指向的空间是不同的。

祝学习愉快~

  • 提问者 不惧岁月 #1

    string s=abc
    老师您的意思是 这时也是创建一个对象s,把abc存到s里面
    string s=new sting(abc)
    这一种是在内存开辟一处空间,存下abc然后把地址交给s
    第一种是存到虚拟机?虚拟机的内存是哪一个?

    2022-09-04 15:24:04
  • 好帮手慕小尤 回复 提问者 不惧岁月 #2

    同学你好,同学理解有一点问题,都会存储到虚拟机的内存中,只不过没有在内存的一个区域中。

    1、

        1)第一种(String s="abc")是存储在虚拟机内存的方法区中。

        2)方法区(Method Area)它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

    2、

        1)第二种(String s=new Sting("abc"))是存储在虚拟机内存的堆空间中。

        2)堆是运行时数据区域,可分配给对象的区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。

    祝学习愉快!

    2022-09-04 16:44:44
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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