该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解: 5 A7 [. Z8 l- g, B: {* s
(string1==string2) : y5 S, L( ]: |& E5 A5 ^% F
但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false
: Z% L d: K- h8 H$ l0 hJava中必须使用string1.equals(string2)来进行判断
# U5 v6 E+ s+ m( m0 F c9 y0 c4 A- @. W1 z
补充
: [" B( j6 V0 \如果: 0 O0 @3 G4 {* U, K
string s1=new String("Hello");
* A" P) T( h( ]5 B, N' Wstring s2=new String("Hello"); 7 u8 Z) y% g/ i7 i# ^
则(s1==s2)=false 1 p; [3 l- s2 p4 V. |- ?
4 o* c0 c$ j8 S' W, {: }
如果:
5 m; ]4 N. ~! q0 V. m0 Nstring s1="Hello"; 6 d6 ~+ o7 ^" {! p
string s2="Hello"; 8 H6 C- N3 t4 S1 K7 o
则(s1==s2)=true;
/ T U$ S/ M) X R) a0 z因为他们指向的同一个对象。
' ~; ~8 q! ~1 ^, r
. W# |" }3 |) L8 g5 Z1 U* j如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|