在线
客服

发布
需求

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

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

/*
                * String是不可变(immutable)类,他的对象都是不可变对象
                * 执行s+"world"之后, s不在指向"这个对象",而是指向另一个的对象
                * 原来的那个对象还在,只是s不在引用他了
                */
                String s = "hello";
                s= s+" world";
//重新引用,会不会有两个值为"hello"对象呢
s="hello";

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

不会有两个值为"hello"对象。
像 "hello" 这种直接写出来的字符串字面量,在 Java 内部只会有一个 String 对象。比如:
Strings1="justone";Strings2="just"+"one";//即便是用常量表达式方式构造出来的字符串也可以"justone" 和 s1 及 s2 都是引用了同一个 String 实例。


但是,用其他方式构造出来的带同样字符串的 String 对象则不一定满足这个规则。 比如
Strings3="just";s3 + "one" 的结果也是 justone,但就不一定引用和上面同样的对象了。

使用道具 举报

发新帖
国内首家创新型IT技术需求众包服务平台,软件需求就上天盟网! 立即登录 立即注册