该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解:
# W- _6 A F: K6 m& G. f# W& {% Z(string1==string2)
! r( ~# H1 h6 A但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false
/ F3 ` X1 ^+ U% D! f7 r7 ~) c) yJava中必须使用string1.equals(string2)来进行判断
& I8 L. g6 j/ A- {, x% r* s) ?; C. {8 W# D
补充 ' _) e: _/ J( H2 M, l- g- c
如果:
( D A' ?& r2 U0 H0 |, nstring s1=new String("Hello");
. N1 ~6 o5 g: e r/ x y% Dstring s2=new String("Hello"); : y! @6 @/ i. z, d, t+ @
则(s1==s2)=false
H: _$ H" [! b7 z; Y7 l* f. k7 ^: u2 J/ K" h& ^6 l$ E3 H
如果:
% r9 i+ [- j( j; `) Estring s1="Hello"; n4 n# h5 t& a/ \) I0 ]
string s2="Hello";
0 }5 ~/ x6 h: Q: E. o h$ V- Z4 |则(s1==s2)=true;
! u3 C; c7 a6 X$ i7 M因为他们指向的同一个对象。 1 h) h" @2 O/ }% t
2 S, z, e. |. O7 _# r, Q
如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|