该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解: 1 m$ |- [) d/ L% d; k% `' d
(string1==string2)
* n2 e/ y% a9 @3 y但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false
1 w4 s( q7 I! nJava中必须使用string1.equals(string2)来进行判断 ) A1 e/ y' f5 i; {% @
* s& o& n( x7 k- H
补充 + I9 u1 i& u2 l1 K5 i" [) ~
如果:
. [+ k; ?7 d) [- u1 p( A, g/ \6 }string s1=new String("Hello"); . \% _/ N. e: v. M5 {% n2 h
string s2=new String("Hello");
9 Z. c8 `" ` t1 r则(s1==s2)=false
$ i# `- B$ ], D# W7 w: |+ @) I. X9 K) L! f& A6 k% U1 M
如果:
; G4 a$ {; a, A; D' n' W! g, N! Ustring s1="Hello";
. z( s6 j1 ]' Q3 Y, g% ?8 P6 gstring s2="Hello";
: S$ e2 j. d" L3 X& D J/ C则(s1==s2)=true;
* S( [" m7 [6 q7 m& i6 |因为他们指向的同一个对象。
; O4 n5 c' E7 R
6 u" Q1 E& d) o: t O* _! `4 ?如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|