该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解: 2 y: n& J% Y6 f- O) J" h5 v
(string1==string2)
8 m0 f7 b0 W4 ~* E& M但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false ; D- ]9 Z& `( l* K- p f" v7 J
Java中必须使用string1.equals(string2)来进行判断 ' @6 y( ?4 p7 U7 o/ g4 K: A) E
$ Y# i- G( r; J) H, `4 z补充 ! B3 [( ]/ L7 F, D- u2 ^0 P! i5 F
如果: " P( V( J: R* W/ V8 B- J7 K
string s1=new String("Hello");
3 e4 F, ~9 T i% Ustring s2=new String("Hello");
. ~) L5 L; @& M' D则(s1==s2)=false
4 H7 [8 D+ z2 m! j: s
4 y3 B3 o* \. i/ I如果: 9 P% | |' b, X8 C! d
string s1="Hello"; ' K) F, x0 }0 I' T- J9 s
string s2="Hello"; 2 Q; m$ P; B5 i
则(s1==s2)=true;
" z: F$ v$ R+ {0 f7 Q" Z+ M因为他们指向的同一个对象。 , l9 e6 G' W1 c) D9 ^( c" [
; g% b. o; ^ L6 d. ]' R$ L% Z如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|