为什么将字符串文字存储在Java的字符串常量池中?
有两种在Java中创建String对象的方法
通过使用新运算符
String str = new String("nhooo.com");通过使用字符串文字
String str = "nhooo.com";
每当我们String()用Java调用new时,它将在堆内存中创建一个对象,并且String常量将进入StringConstantPool(SCP)。
对于对象,JVM使用SCP来进行Java中的有效内存管理。与其他Java对象不同,它们引入了String常量池,而不是在堆区域上管理String对象。String常量池的重要特征之一是,如果池中已经存在String常量,则它不会创建相同的String对象。
示例
public class SCPDemo {
public static void main (String args[]) {
String s1 = "nhooo.com";
String s2 = "nhooo.com";
System.out.println("s1 and s2 are string literals:");
System.out.println(s1 == s2);
String s3 = new String("nhooo.com");
String s4 = new String("nhooo.com");
System.out.println("s3 and s4 with new operator:");
System.out.println(s3 == s4);
}
}输出结果
s1 and s2 are string literals: true s3 and s4 with new operator: false
热门推荐
10 毛笔哥哥结婚祝福语简短
11 向国庆送祝福语简短
12 建队节祝福语简短
13 朋友喜得外孙简短祝福语
14 小店营业的祝福语简短
15 餐饮生日祝福语简短独特
16 鲜花英语祝福语卡片简短
17 男朋友暴富祝福语简短
18 婶婶拜年祝福语大全简短