熟悉C++的人对于两个字符串斗劲的代码必然很体味: (string1==string2)
2 `" Y# q; C: C8 ^ 但在java中,这个代码即使在两个字符串完全不异的情形下也会返回false7 t' t) j- H9 ~5 g
Java中必需使用string1.equals(string2)来进行判定9 f1 C; W% q7 y- _
填补; m- h7 y- G1 _- l
如不美观:4 _, d6 I# Z$ `5 @1 ^" V
string s1=new String("Hello");
% l3 `7 U' t7 f6 b0 `& L string s2=new String("Hello");7 l* h6 _9 J' S) z2 R* w9 E/ x3 a
则(s1==s2)=false
: q& [4 u+ D6 I: Z, D, _) } 如不美观:, |! x& |* H! \ D8 i7 j
string s1="Hello";
' }$ y/ I0 Z- q, {. \ string s2="Hello";9 m$ Q6 O/ e7 D7 @1 g2 i) [5 K
则(s1==s2)=true;' v' a7 c4 B( i: Z( Q/ H1 @ X
因为他们指向的统一个对象。; z& U3 m$ Y$ X9 l. u
如不美观把其他变量的值赋给s1和s2,即使内容不异,因为不是指向统一个对象,也会返回false。所以建议使用equals(),因为equals斗劲的才是真正的内容。 |