String是一个特殊的包装类数据

String str = new String("abc");
使用new创建字符串对象的步骤如下,每调用一次就会创建一个新的对象。
1. 首先在堆(不是常量池)中创建一个包含指定内容的字符串对象,并将字符串引用指向该对象。
2. 去字符串常量池中查看,是否有包含该内容的对象。
3. 若有,则将new出来的字符串对象与字符串常量池中内容相同的对象联系起来。
4. 若没有,则在字符串常量池中再创建一个包含该内容的字符串对象,并将堆中的对象与字符串常量池中新创建出来的对象联系起来。
字符串特殊的内存机制带来的好处,即是:只比较两个字符串联系的常量池中对象是否为同一个即可,不论字符串大小,比较速度一样。
String str = "abc";
1.先在栈中创建一个对String类的对象引用变量str
2.然后查找堆中常量池里有没有存放"abc"
3.如果没有,则将"abc"存放进常量池,并令str指向”abc”
4.如果已经有"abc"则直接令str指向“abc”。

猜你喜欢

转载自blog.csdn.net/qq_21517413/article/details/84799900
今日推荐