黑马程序员技术交流社区

标题: 字符串 [打印本页]

作者: wunairensheng95    时间: 2015-8-11 21:15
标题: 字符串
String a="a";
String b="b";
String c="ab";
String s=a+b;
为什么s==c是false
作者: 星耀    时间: 2015-8-11 21:23
字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的;
作者: 陈cc    时间: 2015-8-11 21:25
不懂,mark以后来看!
作者: sl123    时间: 2015-8-11 21:49
赞同星耀的说法
作者: 黑进制    时间: 2015-8-11 22:02
赞近的很
作者: 一枚小小媛    时间: 2015-8-11 23:10
另外补充:字符串的对比比较一般不会用 == 符号,而且.equals
作者: 塞巴斯的小夏尔    时间: 2015-8-11 23:21
我也有点蒙。。
作者: 谭威威威威    时间: 2015-8-11 23:31

作者: 郭weijie    时间: 2015-8-11 23:39
应该是引用的内存地址的不一样
作者: zby_allan    时间: 2015-8-12 22:23
==是判定地址是否相同,而不是equals内容相同。
作者: cl99025    时间: 2015-8-12 23:01
我是来看答案的!!
作者: q985274961    时间: 2015-8-12 23:26
String类型的
作者: 孟茹    时间: 2015-8-13 19:28
String s=a+b,是在内存中又开辟了一块空间,在内存中有他自己的地址;而String c="ab",也是在内存中开辟了一块空间,也有他自己的地址;两个String对象地址是不一样,(ps:"=="是判断地址的,String里面的重写的equals方法才是判断内容的)
作者: hellojavacode    时间: 2015-8-13 20:25
“ab”是新的匿名对象,所以返回的是false。java中==比较的是变量的地址,就好像C中的指针,指针地址一样就返回true的,你这是两个不同的String对象,肯定地址不同了。如果要比较内容就用equals方法。
作者: 疯疯疯疯疯子    时间: 2015-8-13 20:45
==比较的是地址值和内容,c和s地址值不同吧
作者: 何时指点江山    时间: 2015-8-13 21:49
星耀 发表于 2015-8-11 21:23
字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的; ...

原来是这么回事,涨姿势
作者: TheBadboy    时间: 2015-8-13 21:51
==比较引用数据类型,是比较的地址值
作者: 何时指点江山    时间: 2015-8-13 21:52
星耀 发表于 2015-8-11 21:23
字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的; ...

原来是这么回事,涨姿势
作者: 秋天中の夏季    时间: 2015-8-13 22:41
对象哈希值不同
作者: yushimin763    时间: 2015-8-13 22:47
字符串判定应该用isEqualToString:吧....
作者: 蓬头小道士    时间: 2015-8-13 22:56
没个字符串都是一个对象,字符串一旦被初始化就不能被该变,s==c是false是因为它们是两个不同的对象。




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