String str=new String("hello"):
String str=new String("hello"): 和String str="hello"; 有什么区别吗?
5
收起
正在回答
1回答
同学你好,
String str=“hello”;
先去常量池来查找是否存在“hello”,如果不存在,就在常量池中开辟一个空间来存储“hello”;如果存在,就不用新开辟空间。
String str=new String("hello") ;
先去常量池中查找是否存在“hello”,如果不存在,则在常量池中开辟一个空间存储“hello”。在运行时期,通过String类的构造器在堆内存中new了一个空间,然后将常量池中的“hello”复制一份存放到该堆空间中,在栈中开辟名字为str的空间,存放堆中new出来的这个String对象的地址值。
也就是说,前者在初始化的时候可能创建了一个对象,也可能一个对象也没有创建;
后者因为new关键字,至少在内存中创建了一个对象,也有可能是两个对象。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星