|
该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解: 7 J! l. U2 d' X- U
(string1==string2)
1 E; w( V0 T5 c' I$ N& U# D$ X但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false
2 o7 b* W2 d/ j/ {Java中必须使用string1.equals(string2)来进行判断
g6 Z* T2 A, W0 T: W/ J
- @1 d* J, f$ L* Y! @. I补充
! j& K D4 _# g# d3 W; B3 {如果:
% V [9 C4 K" ustring s1=new String("Hello");
$ E4 K E9 n& d7 p4 A& Q# Cstring s2=new String("Hello"); ' G0 x* H A3 H; I1 ^4 G: K
则(s1==s2)=false . L% Z. z% u8 F8 H6 S( d9 L2 M
* F x$ Q9 v; ~8 Y( \ S
如果:
/ h' A: G9 ?% Ostring s1="Hello"; & q8 @' e( f4 S- M, l
string s2="Hello";
! z$ g3 F! \: d6 [4 z则(s1==s2)=true; * e9 }# ?$ j1 T: [
因为他们指向的同一个对象。
: g/ v0 i8 n7 C) i) D! \$ t% @9 v' j3 L6 c
如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|