如果我重新定义s="hello";是指向原来的String对象,还是一个新的?

/*

* String是不可变(immutable)类,他的对象都是不可变对象

* 执行s+"world"之后, s不在指向"这个对象",而是指向另一个的对象

* 原来的那个对象还在,只是s不在引用他了

*/

String s = "hello";

s= s+" world";

//重新引用,会不会有两个值为"hello"对象呢

s="hello";


HappyTeddy
浏览 1001回答 1
1回答

onemoo

不会有两个值为"hello"对象。像 "hello" 这种直接写出来的字符串字面量,在 Java 内部只会有一个 String 对象。比如:String s1 = "justone"; String s2 = "just" + "one";  // 即便是用常量表达式方式构造出来的字符串也可以"justone" 和 s1 及 s2 都是引用了同一个 String 实例。但是,用其他方式构造出来的带同样字符串的 String 对象则不一定满足这个规则。 比如String s3 = "just";s3 + "one" 的结果也是 justone,但就不一定引用和上面同样的对象了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java