课程
/后端开发
/Java
/Java入门第三季
String str="慕课网";
与String str2=new String("慕课网");
两者之间有什么区别?
2015-05-28
源自:Java入门第三季 2-4
正在回答
首先明白在计算机的内存中有堆和栈两块空间,其中栈中存放所有对象、函数、变量等的引用;而堆中存放对象、值等。 不管是new出的对象还是用类似String str="慕课网";这类的对象,都是放在堆中的。
Java虚拟机为了提高字符串应用效率,提供了字符串池来保存字符串常量,str创建字符串常量"慕课网"时,虚拟机会先检测字符串池中是否包含该字符串,如果不包含则创建该字符串常量,并将其保存在字符串池中,然后再返回。
而执行到String str2=new String("慕课网");系统会直接实例化该对象,而不会在池中查找。也不会将这个对象放在池中。
AndyHT
Perona 回复 AndyHT
用作初始化就没有区别
举报
Java中你必须懂得常用技能,不容错过的精彩,快来加入吧
2 回答String类型的null,String(),String("");之间有什么区别?
4 回答super (String str);
2 回答new Student(String id , String name)
2 回答string和stringBuilder有什么区别
3 回答String和StringBuilder的区别