为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HappyTeddy 2018-06-01 16:01:54
/* * String是不可变(immutable)类,他的对象都是不可变对象 * 执行s+"world"之后, s不在指向"这个对象",而是指向另一个的对象 * 原来的那个对象还在,只是s不在引用他了 */ String s = "hello"; s= s+" world";//重新引用,会不会有两个值为"hello"对象呢s="hello";
查看完整描述

1 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

不会有两个值为"hello"对象。

像 "hello" 这种直接写出来的字符串字面量,在 Java 内部只会有一个 String 对象。比如:

String s1 = "justone";
String s2 = "just" + "one";  // 即便是用常量表达式方式构造出来的字符串也可以

"justone" 和 s1 及 s2 都是引用了同一个 String 实例。


但是,用其他方式构造出来的带同样字符串的 String 对象则不一定满足这个规则。 比如

String s3 = "just";

s3 + "one" 的结果也是 justone,但就不一定引用和上面同样的对象了。

查看完整回答
反对 回复 2018-06-01
  • 1 回答
  • 0 关注
  • 1000 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信