创建字符串的过程理解

创建字符串的过程理解

问题描述:

图中常量池,我可以理解为对象常量池,里面存储的应该是一个字符串对象,我这样理解对吗?

相关截图:

http://img1.sycdn.imooc.com//climg/5ff8f1e808a24a9b19201080.jpg


创建String对象的过程:

一、String str = "imooc";

二、Java会到常量池中找有没有值为“imooc”String对象有的话,直接赋值,没有的话,就创建一个 new String("imooc");,放到常量池中,str1 直接指向这个地址

三、str2 也是一样,这时常量池中已经有值为“imooc”的String对象了,直接赋值

四、String str3 = new String("imooc),这里老师看我讲的对不对,这是声明并实例化了一个String类型的对象,在实例化过程中其实也是先去常量池中查找imooc是否存在,存在直接拿来作为构造方法的参数

正在回答

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

1回答

同学你好,1、同学理解存在一点小问题,Java会到常量池中找有没有值为“imooc”String对象有的话,直接赋值,没有的话,就创建一个 imooc(并不会进行实例化),放到常量池中,str1 直接指向这个地址。

2、第三点同学理解是正确的。

3、在创建String对象的过程中第四点有一点小问题,在实例化时,并不会将常量池中的数据,作为参数进行实例化。而是根据实例化传递的参数进行实例化的。

    关于String对象实例化,String s = new String(“imooc”); 是先在堆中创建,然后去常量池中看一下,如果没有,就放一份,如果有就不放了(和堆中的地址不一样)。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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