该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解:
. T8 {; F4 [7 ]7 u N8 z" q(string1==string2) : l; u% {5 G- j
但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false
, t: c) N1 o/ H. T4 QJava中必须使用string1.equals(string2)来进行判断
! s# w5 P8 {) E0 E& y6 u( [4 R' e% M; s6 k1 K: }
补充 ' N; x) j- R# S# w1 `+ p
如果: 4 {) A6 Q8 m3 b$ z' x. a! H
string s1=new String("Hello"); % z; }- i% j7 d1 ?3 P( K9 P
string s2=new String("Hello"); % }, [. f+ b) R# e/ _, w, f0 d
则(s1==s2)=false
( f! j2 w6 ]) |2 ]- d$ o& {$ b; `, [% J0 c
如果:
0 S3 ^5 z$ K. W$ W( Ustring s1="Hello";
; I1 e/ Q8 |- _" X4 F7 j, h! D. Lstring s2="Hello"; 9 V5 l( b K( s* q
则(s1==s2)=true;
% u$ B$ ], F, b& L/ r8 L }3 B6 u因为他们指向的同一个对象。 7 P5 F9 U: Q, E& M1 v
3 F' A* E( p- W) q如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|