该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解:
, r* J! I a% n4 Z$ B(string1==string2)
/ h+ ?+ N1 i) G0 ]* T T/ e9 q% y但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false
1 e8 }& O0 m1 ^# n7 d' cJava中必须使用string1.equals(string2)来进行判断 + W3 {% E7 C1 D/ d& y
9 ~2 \% A& E3 _; `% C K补充
6 T( Z) O" g2 a如果:
6 h# ^" ^* K+ _" P, g0 j1 ostring s1=new String("Hello");
; e( F+ i8 B/ F/ ^& z2 C/ p6 ostring s2=new String("Hello"); / {$ i2 ^$ {/ ~5 _
则(s1==s2)=false % |+ j6 Q0 n! E4 y" `3 A
1 K* d1 I% G8 z7 W. U2 R5 ]& Z
如果:
* e6 G3 b+ z9 W+ _" V) Dstring s1="Hello";
! @( `( i9 V" S& P$ V& Wstring s2="Hello";
' `. A% M7 Y% U8 v( G, Z8 N* I则(s1==s2)=true; * _$ a; w2 u# v0 V& b# C
因为他们指向的同一个对象。
, v6 I. F5 W, {; C9 E- h- K$ M! @3 W& k: X
如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|