字符串比较的问题,请大家来测试下这三题,讲讲为什么?

ynduanlian 2012-09-17 08:43:12
在Java中,在输入框中什么也不填
String strKey=editText1.getText().toString();

(strKey.trim()=="") --> false or true 为什么
(strKey=="") --->true or false 为什么
strKey.trim().equals("") -->true or false 为什么

请大家来测试下这三题,讲讲为什么?
...全文
105 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ynduanlian 2012-09-17
  • 打赏
  • 举报
回复
在Android 的Java虚拟机下测试结果是这样的:
(strKey.trim()=="") --> false
(strKey=="") --->true
strKey.trim().equals("") -->true
((strKey.trim())=="") -->true
(strKey.trim().toString()=="") -->true
但有人说在JDK的虚拟机下测试都是true
zpc19911204 2012-09-17
  • 打赏
  • 举报
回复
第一种情况:false
第二种情况:false
第三种情况:true

首先,trim()这个函数是把输入的字符串去掉最前面的空格和最后面的空格再输出。这里你只输入"",trim()函数是不发挥作用的。那第一种和第二种情况就是一样的,他们和第三种情况的区别就在于==和equals的区别。
如果不是基础数据类型,==的判断基本比较渣,它只是判断两个object的reference(差不多就是指针)是不是一样,一样就返回true,否则false。具体来说,==两边如果是指到同一个地方的话,才会是true;如果两边指到不同的地方,即使那两个地方的内容相同,也会返回false。
一般来说,想比较两个object的内容是不是一样,会用equals。equals会把内容取出来进行对比,这时候返回true就是内容一样。

具体到这个问题,strKey和""的内容是一样的,但存在不同的地方,所以==返回false,equals返回true。
ynduanlian 2012-09-17
  • 打赏
  • 举报
回复
那能否讲解下上面所列三种情况,会是什么结果,为什么吗?
龙泉剑 2012-09-17
  • 打赏
  • 举报
回复
java中字符串比较的问题,"=="比较引用,"equals"比较值,具体见:
http://blog.csdn.net/chthq/article/details/7909720

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧