该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解:
$ `& T( O$ {; Y( E(string1==string2)
' }9 s$ F1 o# {: E9 S! S* n) P; W9 ]但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false ' F5 |3 B" C3 m& ^4 Z: W+ K/ N
Java中必须使用string1.equals(string2)来进行判断
* h. [& O% l5 |, J
& G/ y; ]- P5 s0 [0 l4 w1 h5 `补充
9 Z. y( ]4 J9 _" s如果:
" }3 I7 U, b+ E. O* Ustring s1=new String("Hello"); ( c2 W' j( F1 V
string s2=new String("Hello");
" ]# g5 T% v1 k# E5 d( y则(s1==s2)=false & O4 U0 L8 i6 L$ `) w
5 m- D( t# P" B) }0 g
如果: : w6 n; \- @' `; w# V
string s1="Hello";
' {* P5 X4 k* |: wstring s2="Hello"; . ^ u7 `8 D6 |- H: q! w
则(s1==s2)=true; 3 d) N. \( C' T" t5 [3 ]
因为他们指向的同一个对象。 + m; I e$ G) {$ n# d) M: u
$ \, X0 g. |- ~. l( E& S9 o
如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|