java小问题,求解惑

magic_nian 2015-06-06 08:15:06

package test_03;

public class StringTest {

public static void main(String[] args) {
String s1="abc";
String s2=s1;
System.out.println(s1==s2);
s1+="d";
System.out.println(s1==s2);
StringBuffer sb1=new StringBuffer("abc");
StringBuffer sb2=sb1;
System.out.println(sb1==sb2);
sb1.append("d");
System.out.println(sb1==sb2);
}
}


以上代码的输出结果是
true
false
true
true
第二个false和最后一个true是为什么啊?
...全文
102 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bruce's Hand 2015-06-06
  • 打赏
  • 举报
回复
楼主,你好。我正好也在看你的这个问题,有几个地方不是很明白。能请你帮忙看看吗? 我看书上说:==是用来判断两个对象是不是同一个对象。 如 string s1 = "abc"; string s2 = "abc"; string s3 = "abc"; 只有s1==s2会返回true,其他的都会返回false。 那么s1和s2应该就是同一个对象,对s1执行s1+="d",s1和s2不应该都变成了"abcd"吗? 我不是很明白,希望你能解答一下。谢谢。
magic_nian 2015-06-06
  • 打赏
  • 举报
回复
引用 2 楼 CodeofWorker 的回复:
s1+="d”;其实就是s1+“d”所以s2=s1.不等于s1+“d”其中"d"可理解为s3.String是不可变的字符。而相反StringBuffer是可变的,append方法可理解成在StringBuffer最后一位添加了一位。所以第四为true
String不可变,而StringBuffer是可变的,懂了
CodeofWorker 2015-06-06
  • 打赏
  • 举报
回复
s1+="d”;其实就是s1+“d”所以s2=s1.不等于s1+“d”其中"d"可理解为s3.String是不可变的字符。而相反StringBuffer是可变的,append方法可理解成在StringBuffer最后一位添加了一位。所以第四为true
  • 打赏
  • 举报
回复
用的是啥编辑器?
CodeofWorker 2015-06-06
  • 打赏
  • 举报
回复
引用 5 楼 CodeofWorker 的回复:
[quote=引用 4 楼 BingChuan的回复:]楼主,你好。我正好也在看你的这个问题,有几个地方不是很明白。能请你帮忙看看吗? 我看书上说:==是用来判断两个对象是不是同一个对象。 如 string s1 = "abc"; string s2 = "abc"; string s3 = "abc"; 只有s1==s2会返回true,其他的都会返回false。 那么s1和s2应该就是同一个对象,对s1执行s1+="d",s1和s2不应该都变成了"abcd"吗? 我不是很明白,希望你能解答一下。谢谢。
"abc"在内存是固定的,s1与s2只是指向了它,当s1+="d" 时,其实是重新在内存中建立了“abcd”的一块,但s2还是指向“abc”,手机回复的,上一贴手误提交了。。。还不能改
CodeofWorker 2015-06-06
  • 打赏
  • 举报
回复
引用 4 楼 BingChuan的回复:
楼主,你好。我正好也在看你的这个问题,有几个地方不是很明白。能请你帮忙看看吗? 我看书上说:==是用来判断两个对象是不是同一个对象。 如 string s1 = "abc"; string s2 = "abc"; string s3 = "abc"; 只有s1==s2会返回true,其他的都会返回false。 那么s1和s2应该就是同一个对象,对s1执行s1+="d",s1和s2不应该都变成了"abcd"吗? 我不是很明白,希望你能解答一下。谢谢。
"abc"在内存是固定的,s1与s2只是指向了它,当s1+="d"加入到

50,454

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧