顾名思义,字符串常量池就是用来存储字符串的,它存在于java对内存中。
下图解释了字符串池在java堆空间中如何存在以及当我们使用不用方式创建字符串时情况。
public class StringPool{
public static void main(String[] args){
String s1="cat";
String s2="cat";
String s3=new String("cat");
System.out.println("s1==s2:",(s1==s2));
System.out.println("s1==s3:",(s1==s3))
}
}
结果如下:
s1= =s2:true
s1= =s3:false
以上代码会创建1或2个字符串。如果字符串池中已经有一个字符串“cat”,那么就会自动创建一个“cat”字符串。如果字符串常量池中没有“cat”,那么首先会在字符串池中创建,然后才在堆内存中创建,这种情况下就会创建2个对象了。