如下代码:String s1="爱慕课";String s2="爱慕课";String s3=new ("爱慕课");String s4=new ("爱慕课");我知道,s1和s2,编译程序只创建了一个,问题是,值同样都是“爱慕课”,为什么s3,s4却都被程序创建了?
2 回答
我不会你还让我
TA贡献10条经验 获得超2个赞
s1为字面常量定义的字符串,他被创建后存放在字符串池中,在执行第二行代码时,“爱慕课”字符串对象在池中已存在,所以直接返回池中已存在的那个字符串对象。所以 此方式创建字符串 只创建一次;但是通过new 构造器的方法创建字符串之后,在堆内存中分别分配了两个内存地址 s3 和 s4 分别指向了堆中的两个不同的对象,不同的对象就会有不同的地址分配。
添加回答
举报
0/150
提交
取消