该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解:
* D4 W! ]! d+ e$ h4 u(string1==string2) 7 ~; o# g, I6 s7 o! i4 Q# @& |
但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false , v9 \' o$ r* J5 a+ f- I
Java中必须使用string1.equals(string2)来进行判断
, }7 h* F# X: G, k2 A: F
4 Z" |% X+ x! S, a3 {, t2 b补充 % U7 |) i' S- p4 z$ j2 s* N# z7 k
如果: " D, e3 \- Y3 E. L1 d- g
string s1=new String("Hello");
! M8 Q4 Z1 ~) i9 c" r: }% wstring s2=new String("Hello");
9 U1 }1 Y1 i4 F2 `/ L则(s1==s2)=false / j. J% y0 {8 Y7 _. X
$ @6 D8 h. ~) _- s. k
如果: / M4 f( Y5 _; P$ t7 Y) } `9 f/ ]
string s1="Hello"; * y4 B: E I6 l) s+ R w c# s
string s2="Hello";
: {0 L7 E) t0 |) f* h则(s1==s2)=true;
6 y3 f M' t, \4 i% X2 M* p, I因为他们指向的同一个对象。 r$ f- C$ u. c3 r
, m: Y3 w1 v9 H$ ~8 X如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|