有两种在Java中创建String对象的方法
通过使用新运算符
String str = new String("nhooo.com");
通过使用字符串文字
String str = "nhooo.com";
每当我们String()
用Java调用new时,它将在堆内存中创建一个对象,并且String常量将进入String Constant Pool(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