该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解:
; j/ L' @+ X( Y(string1==string2) " m' t% X' k3 B* k1 h6 p
但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false 0 b c) u& t _8 `/ p
Java中必须使用string1.equals(string2)来进行判断
2 i! ~! P2 b0 i8 |) b, g3 l9 T
2 O% c$ W0 y- s( x2 {补充
( G- H H' `& ^8 x* c如果: 4 \" V0 r( H/ C. Y: O+ K- w5 x+ h
string s1=new String("Hello"); 4 q( o0 W( a, _6 H7 f# a2 X$ O' F, i
string s2=new String("Hello");
9 Y% Z, ?4 b, N1 R4 ~则(s1==s2)=false
& {) F) b' a$ l" B, m8 d
! d3 t+ D7 } J9 y s如果:
5 O1 |: j G2 q2 P9 }$ V" rstring s1="Hello";
- V" U2 e" `( P: a* |" R+ Qstring s2="Hello"; # \3 I. K! m. t
则(s1==s2)=true; 4 _; d3 Q7 f+ c
因为他们指向的同一个对象。
5 [7 ?' m. P7 u) Z" ?+ }$ [
7 D3 b; Z: _/ D" q% ~6 T如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|