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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪平乐 高级黑马   /  2013-2-15 11:27  /  1606 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 汪平乐 于 2013-2-19 18:13 编辑

String s1 = "abc";
String s2 = new String("abc");
为什么String s2 = new String("abc")会有两个对象?,而且 s1==s2会false ; 而 s1.equals(s2) 是true:handshake

2 个回复

倒序浏览
String s2 = new String("abc");这一句中你把"abc"这个字符串看成一个整体,前面有new就创建了一个对象,而"abc"本身也是一个字符串对象,所以有两个
s1==s2比较的是两个对象的内存地址,s2是new出来的,所以地址肯定不同,而equals是比较的对象本身,显然两个都是"abc",故结果为true

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 黄成超 于 2013-2-15 21:43 编辑

看一下这个链接,希望对你有所帮助
String特点归纳:
http://bbs.itheima.com/thread-38016-1-1.html
还有就是equals与==的用法:
http://bbs.itheima.com/forum.php?mod=viewthread&tid=37090&highlight=equals
主要对String s1 = "abc"的等效形式与equals及“==”区别就可以解决这个问题啦!

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马