日期:2014-05-20  浏览次数:20725 次

字符串比较的问题,请大家来测试下这三题,讲讲为什么?
在Java中,在输入框中什么也不填
String strKey=editText1.getText().toString();

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

请大家来测试下这三题,讲讲为什么?

------解决方案--------------------
java中字符串比较的问题,"=="比较引用,"equals"比较值,具体见:
http://blog.csdn.net/chthq/article/details/7909720
------解决方案--------------------
第一种情况:false
第二种情况:false
第三种情况:true

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

具体到这个问题,strKey和""的内容是一样的,但存在不同的地方,所以==返回false,equals返回true。