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

关于string的疑问
"String ".trim()   ==   "String ".trim();//true
"String ".replace( 'g ', 'G ')==   "String ".replace( 'g ', 'G ');//false
"String ".replace( 't ', 't ')   ==   "String ";//true
以上方法应该返回的都是一个新的String对象   ,而==应该比较的是字符串的对象,==号左右两边返回的都是新的字符串对象,怎么会相等呢?

------解决方案--------------------
先看看trim()方法的实现再说话。

------解决方案--------------------
如果此 String 对象表示一个空字符序列,或者此 String 对象表示的字符序列的第一个和最后一个字符的代码都大于 '\u0020 '(空格字符),则返回对此 String 对象的引用。
------解决方案--------------------
JAVA中,两个String是否相等的判断方法是调用String.equals() 不是直接使用 ==

------解决方案--------------------
用 "== "不是不可以,如果是两个对象,两个对象完全相同时可以得到true
最好不要这样用,用equals()
项目中如果很多这样的比较可以考虑重写这个方法
------解决方案--------------------
http://www.javaranch.com/journal/200409/Journal200409.jsp#a1
读完这个你就会明白了