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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jaunce 中级黑马   /  2015-8-24 07:17  /  1175 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s1="abc";
String s2=new String("abc");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));

结果一样么,为啥?

8 个回复

倒序浏览
false true ==比的是变量的值,而题里2个变量存放的是不同“abc”对象的内存地址,而equals比的是内容,他们内容都一样。
回复 使用道具 举报
这个题经常考
回复 使用道具 举报
第一个println为false,而第二个println为ture.String的内容是不可变的:即对象不可变,但引用可变
回复 使用道具 举报
这道题主要是考 == 和equal的区别:
== 对象的比较,值相等,引用也要相同才能相等
equal 值相等就OK
回复 使用道具 举报
这个题主要考2点:1、内存结构的问题 2、==和equals的区别
字符串常量和static变量存放在data segment,而对象存放在heap segment;
==比较的是地址,由于String类重写了equals方法,比较的是2个字符串的内容是否相等
回复 使用道具 举报
visen 中级黑马 2015-8-24 13:41:52
7#
结果:false  true,  ==比较的是地址, equals比较的是 内容
回复 使用道具 举报
这道题确实很容易考,楼上们都说的很清楚了,望楼主加油拿下它!
回复 使用道具 举报
这题应该不难吧,把握住==和equals就行 ,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马