字符串常量池

时间:2021-05-02 21:44:52

创建字符串有两种方式:两种内存区域(字符串池,堆)
1." " 引号创建的字符串在字符串池中
2.new,new创建字符串时首先查看池中是否有相同值的字符串,如果有,则拷贝一份到堆中,然后返回堆中的地址;如果池中没有,则在堆中创建一份,然后返回堆中的地址(注意,此时不需要从堆中复制到池中,否则导致浪费池的空间)
3.另外,对字符串进行赋值时,如果右操作数含有一个或一个以上的字符串引用时,则在堆中再建立一个字符串对象,返回引用;如String str2=str1+ "abc"; 
比较两个已经存在于字符串池中字符串对象可以用"=="进行,拥有比equals操作符更快的速度。