|
该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解:
4 {" i2 d3 P; O Z3 B! x a(string1==string2) ! E- E7 d6 Y, k) F
但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false 7 v& z+ y2 {. X# \
Java中必须使用string1.equals(string2)来进行判断 5 k3 q' r! d- [6 V7 P, z
4 O# l- T3 U" H' H9 _补充
( C/ x; k7 H; q6 a7 t/ m( I9 y/ q如果: : u# ]) W/ s2 U$ ]
string s1=new String("Hello"); 2 t9 H* k# F, j' h' u# t) X
string s2=new String("Hello"); 8 Q( B2 i3 v6 L, O8 s
则(s1==s2)=false
n) x1 E5 H/ h0 R1 p- }* s9 q
6 X1 a- O5 w0 t2 n. j如果: & S. O3 e7 U; j$ J( ~8 d
string s1="Hello"; # _& l- p: C& P' F0 ^3 b* _ f2 }
string s2="Hello"; 9 k% a6 F2 S3 z) I/ F
则(s1==s2)=true; : F' k. P7 l; `6 v2 O
因为他们指向的同一个对象。 $ ?: Q8 A) J2 K$ y
4 N$ I# A: C8 g% g如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|