如果我重新定义s="hello";是指向原来的String对象,还是一个新的?
/*
* String是不可变(immutable)类,他的对象都是不可变对象
* 执行s+"world"之后, s不在指向"这个对象",而是指向另一个的对象
* 原来的那个对象还在,只是s不在引用他了
*/
String s = "hello";
s= s+" world";
//重新引用,会不会有两个值为"hello"对象呢
s="hello"; |
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
不会有两个值为"hello"对象。
像 "hello" 这种直接写出来的字符串字面量,在 Java 内部只会有一个 String 对象。比如:
Strings1="justone";Strings2="just"+"one";//即便是用常量表达式方式构造出来的字符串也可以"justone" 和 s1 及 s2 都是引用了同一个 String 实例。
但是,用其他方式构造出来的带同样字符串的 String 对象则不一定满足这个规则。 比如
Strings3="just";s3 + "one" 的结果也是 justone,但就不一定引用和上面同样的对象了。 |
|
|
|
|