A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s3 == s2);
System.out.println(s3.equals(s2));
补充:今天学习了这道面试题解答,视频里提及到了StringBuffer类及append方法,和toString方法的调用,请帮忙分析一下都是怎么调用的,最好帮忙给一下代码说明,谢谢。
ps:手机发帖排版不是很好,求知欲望强!


8 个回复

倒序浏览
xiaogui 来自手机 中级黑马 2016-4-26 13:02:09
沙发
[quote]xiaogui 发表于 2016-4-26 13:00
String s1 =

大神们快点过来给菜鸟授课啦!!
回复 使用道具 举报
第一个false,因为用s1去+c,s1是一个变量,底层是用StringBuffer或者StringBuilder实现,会新创建一个StringBuffer或者StringBuilder对象在缓冲区,然后将s1和c用append方法连接起来,之后再用toString方法转成字符串,得到的是一个新的字符串.
第二个true.它们的内容是一样的.
回复 使用道具 举报
xiaogui 来自手机 中级黑马 2016-4-26 14:16:29
板凳
BackGaoz 发表于 2016-4-26 13:21
第一个false,因为用s1去 c,s1是一个变量,底层是用StringBuffer或者StringBuilder实现,会新创建一个StringBu ...

谢谢解答,自己再理解理解。
回复 使用道具 举报
String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s3 == s2);  false
System.out.println(s3.equals(s2)); true
s3 != s2 是因为,s1是变量,相加的时候会创建对象, == 比较的是地址,String类重写了equals方法,这个方法比较的是内容
回复 使用道具 举报
第一个False  :因为==号比较的是地址值,String 创建之后是不可改变的所以s2与S3虽然都是“abc”,但是他们不是同一个对象,所以他们的地址值是不一样的。
第二个true:因为Equels比较的是内容,很明显S2和S3都是"abc",所以是true.
回复 使用道具 举报
不相等比较的是地址值
回复 使用道具 举报
多谢楼上解答
回复 使用道具 举报
精彩 中级黑马 2016-4-27 11:00:08
9#
跟着学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马