对于String s1=new String("aaaa");创建了两个字符串对象,首先会在字符串池中寻找是否存在一个“aaaa”的字符串对象,如果没有,那么这时就会在池中创建一个该对象,如果池中有那么就不需要创建,然后在堆中在创建一个"aaaa"的对象,最后返回堆中的这个对象的地址并赋给s这个引用即可;
如果用字面值的方式创建字符串对象的时候,即String s="abc"; 那么此时有可能没有创建对象,而是返回字符串池中已有的这个"abc"这个对象的地址并赋值给s,当然若果池中没有这个对象,那么这时就会在池中创建这个对象,最后返回这个对象的地址即可
楼主要知道创建字符串对象的两种方式和字符串池的概念 |