- String类内部会维护一个String pool的字符串池.这个池存在于栈内存中
- 为什么要设计这样一个String pool池呢?有两个原因:
- 1:String是一个常量
- 2:String使用很频繁.所以为效率设计
- String a=new String("abc");
- 这一句话代表虚拟机会查找字符串池里有没有"abc"这个对象,没有就创建一个.然后在
- 堆内存中再创建一个,将堆内存中的地址值返回,如果有的话,就不创建,但是仍然会在堆内存中创建一个"abc"的对象
- String a="abc";
- 代表虚拟机直接在字符串池中查找有没有这个对象,有的话就返回,没有就创建一个
复制代码 |