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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wunairensheng95 中级黑马   /  2015-8-11 21:15  /  976 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String a="a";
String b="b";
String c="ab";
String s=a+b;
为什么s==c是false

20 个回复

倒序浏览
字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的;
回复 使用道具 举报
不懂,mark以后来看!
回复 使用道具 举报
赞同星耀的说法
回复 使用道具 举报
赞近的很
回复 使用道具 举报
另外补充:字符串的对比比较一般不会用 == 符号,而且.equals
回复 使用道具 举报
塞巴斯的小夏尔 来自手机 中级黑马 2015-8-11 23:21:20
7#
我也有点蒙。。
回复 使用道具 举报
回复 使用道具 举报
应该是引用的内存地址的不一样
回复 使用道具 举报
==是判定地址是否相同,而不是equals内容相同。
回复 使用道具 举报
我是来看答案的!!
回复 使用道具 举报
q985274961 来自手机 中级黑马 2015-8-12 23:26:23
12#
String类型的
回复 使用道具 举报
String s=a+b,是在内存中又开辟了一块空间,在内存中有他自己的地址;而String c="ab",也是在内存中开辟了一块空间,也有他自己的地址;两个String对象地址是不一样,(ps:"=="是判断地址的,String里面的重写的equals方法才是判断内容的)
回复 使用道具 举报
“ab”是新的匿名对象,所以返回的是false。java中==比较的是变量的地址,就好像C中的指针,指针地址一样就返回true的,你这是两个不同的String对象,肯定地址不同了。如果要比较内容就用equals方法。
回复 使用道具 举报
==比较的是地址值和内容,c和s地址值不同吧
回复 使用道具 举报
星耀 发表于 2015-8-11 21:23
字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的; ...

原来是这么回事,涨姿势
回复 使用道具 举报
==比较引用数据类型,是比较的地址值
回复 使用道具 举报
星耀 发表于 2015-8-11 21:23
字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的; ...

原来是这么回事,涨姿势
回复 使用道具 举报
对象哈希值不同
回复 使用道具 举报
字符串判定应该用isEqualToString:吧....
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马