猿问

和字符串有关的问题:

如下代码:

String s1="爱慕课";

String s2="爱慕课";

String s3=new ("爱慕课");

String s4=new ("爱慕课");


我知道,s1和s2,编译程序只创建了一个,问题是,值同样都是“爱慕课”,为什么s3,s4却都被程序创建了?

死神的苹果
浏览 913回答 2
2回答

我不会你还让我

s1为字面常量定义的字符串,他被创建后存放在字符串池中,在执行第二行代码时,“爱慕课”字符串对象在池中已存在,所以直接返回池中已存在的那个字符串对象。所以 此方式创建字符串 只创建一次;但是通过new 构造器的方法创建字符串之后,在堆内存中分别分配了两个内存地址 s3 和 s4 分别指向了堆中的两个不同的对象,不同的对象就会有不同的地址分配。
随时随地看视频慕课网APP

相关分类

Java
我要回答