为什么将字符串文字存储在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
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练