创建字符串的过程理解2
首先感谢老师有了新的讨论结果然后告诉我,让我重新查看了之前的问题,有了新的感悟
问题描述:还是以这个图为例
这是之前老师的回答
问题一:就第一点,创建一个imooc,但是不会进行实例化,这个我不太明白,String str = "imooc" 那肯定是一个实例对象吧,这是我的理解
问题二:就第三点老师的回答,而是根据实例化传递的参数进行实例化,那么问题来了,实例化传递的参数,参数是一个字符串,那么如果是一个字符串,那必定是一个对象,就以“imooc”为例,我如果常量池中有,那么这个当做参数的“imooc”是不是指向就是常量池中的“imooc”
尝试过的解决方式:
本来我想使用继承的方式观看,参数的内存地址值,但是发现String是个不能被继承的类,那就没办法去观察了,望老师解惑
正在回答
同学你好,1、
1)先了解一下什么是实例化?
实例化:对象也是引用数据类型,只能使用new运算符从堆中分配内存。使用已经定义好的类,创建该类对象的过程称为“实例化”。也可以理解为,通过new关键字创建的对象为实例化。
2)综上所述,所以String str = "imooc"并没有进行实例化,而是进行了一次赋值。
2、同学理解有一点偏差,常量池与堆是两个地址,并没有进行关联。在String对象实例化时(String s = new String(“imooc”)),是根据参数进行创建的。
实例化时,会先在堆中创建,然后去常量池中看一下,如果常量池中没有,就在常量池中放一份,如果有,在常量池中就不放了(和堆中的地址不一样)。如下图所示:
祝学习愉快!
- 参与学习 人
- 提交作业 9397 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星