黑马程序员技术交流社区

标题: 经典面试题 [打印本页]

作者: jaunce    时间: 2015-8-24 07:17
标题: 经典面试题
String s1="abc";
String s2=new String("abc");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));

结果一样么,为啥?

作者: a2029460    时间: 2015-8-24 08:38
false true ==比的是变量的值,而题里2个变量存放的是不同“abc”对象的内存地址,而equals比的是内容,他们内容都一样。
作者: a1ccwt    时间: 2015-8-24 09:04
这个题经常考
作者: 血马雄风    时间: 2015-8-24 09:40
第一个println为false,而第二个println为ture.String的内容是不可变的:即对象不可变,但引用可变
作者: 胡述灵    时间: 2015-8-24 09:58
这道题主要是考 == 和equal的区别:
== 对象的比较,值相等,引用也要相同才能相等
equal 值相等就OK
作者: 哈皮哈皮doge    时间: 2015-8-24 12:35
这个题主要考2点:1、内存结构的问题 2、==和equals的区别
字符串常量和static变量存放在data segment,而对象存放在heap segment;
==比较的是地址,由于String类重写了equals方法,比较的是2个字符串的内容是否相等
作者: visen    时间: 2015-8-24 13:41
结果:false  true,  ==比较的是地址, equals比较的是 内容
作者: 三分之一    时间: 2015-8-24 14:12
这道题确实很容易考,楼上们都说的很清楚了,望楼主加油拿下它!
作者: 飞龙传神    时间: 2015-8-24 14:28
这题应该不难吧,把握住==和equals就行 ,加油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2