黑马程序员技术交流社区
标题:
==的使用
[打印本页]
作者:
ma464526717
时间:
2016-2-16 22:55
标题:
==的使用
String s3 = “你好吗”;
String s4 =”你”;
String s5 =”好吗”;
System.out.println(s3==(s4+s5))
为什么是false而不是ture?求解答。
作者:
参禅悟道
时间:
2016-2-17 11:41
本帖最后由 参禅悟道 于 2016-2-17 11:44 编辑
第一呢:s4:”你”前面多一个空格,s5:”好吗”前面也多一个空格,另外呢,java里面比较两个字符串不能用==,要用equals,你把空格去掉,比较的时候用s3.equals(s4+s5),就OK了。
解释:具体什么原因,需要你自己去理解查看,学会用百度动手一下就行了,你看一下这篇文章就知道了http://www.cnblogs.com/dolphin0520/p/3592500.html
作者:
j6819236
时间:
2016-2-17 19:53
因为字符串变量后面跟“+”其实原理是在底层创建一个StringBuilder对象,再调用append方法添加"+"后面的数据,然后再调用toString方法返回String对象,在经过这一系列操作过程,s4+s5的地址指向的是String对象地址,而不是常量池中"abc"的地址
作者:
zhanganping
时间:
2016-2-17 21:22
用equals解答此问题
作者:
hekaikai
时间:
2016-2-17 21:47
因为==比较的是地址值。s3与s4的地址值不等于s5的地址值
作者:
ChiCaoMa
时间:
2016-2-17 22:42
不能把s4+s5与Java的常量优化机制混淆。。
作者:
liuxiaoye
时间:
2016-2-17 22:53
因为==比较的是地址值
作者:
晓寒轻
时间:
2016-2-18 18:11
看来大家都知道哈。。。都好厉害
作者:
WestdoorEmperor
时间:
2016-2-18 18:37
s4+s5是变量相加,如果是"你"+"好吗"=="你好吗"就是true了
作者:
苍山雪
时间:
2016-2-18 21:14
还有这么加的?一般不是用equals吗
作者:
fagug
时间:
2016-2-19 01:20
==比较的地址值,用equals()比较内容吧。。。。。。。。。
作者:
李岳珉
时间:
2016-2-19 08:17
(s4+s5)的值是地址值 “你好吗” s3指向的是是常量池中
作者:
糊涂真好
时间:
2016-2-19 11:04
String是引用数据类型,==比较的是两者的地址值
作者:
安卓必备
时间:
2016-2-19 18:24
两个变量相加创建新的空间.==比较的是地址值.so..
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2