熟悉C++的人对于两个字符串斗劲的代码必然很体味: (string1==string2)8 O1 J6 o8 t3 Y: J" R S. H# ?
但在java中,这个代码即使在两个字符串完全不异的情形下也会返回false. D/ N2 X0 H0 w, I# ^3 z8 G4 _+ m
Java中必需使用string1.equals(string2)来进行判定3 o: E* K. o2 J* D6 \) u3 u
填补% n( T9 K. s: u G6 j. M
如不美观:
" ?5 s2 O! `3 e# ? string s1=new String("Hello");
1 ?& h% d. b* K string s2=new String("Hello");
2 z6 w0 J4 V3 O, {7 T 则(s1==s2)=false7 H. t+ Y* l$ ^! s, f& |+ ^" f6 ?
如不美观:3 _! F0 J- ?: c7 d& v# B$ d- L
string s1="Hello";
+ h& O. @) r: G( @4 b string s2="Hello";" [& n) y# V g6 s {* E$ \
则(s1==s2)=true;
8 r6 t2 }# g, v$ r5 S# n) {) [ 因为他们指向的统一个对象。7 [) R" ]; q+ L/ A0 \
如不美观把其他变量的值赋给s1和s2,即使内容不异,因为不是指向统一个对象,也会返回false。所以建议使用equals(),因为equals斗劲的才是真正的内容。 |