|
该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解:
# [5 c! U3 S* w(string1==string2)
+ m7 C; T4 \9 l6 W% f5 P' _但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false
8 \8 |8 n/ v8 C6 _% x8 J6 S3 ?9 wJava中必须使用string1.equals(string2)来进行判断 & M( S8 p1 N$ e$ D. {
# P9 w9 g6 I1 m4 ]* ~+ `5 |
补充 ( H* k- V" J3 o/ O
如果:
+ i0 ?* [, h N) Astring s1=new String("Hello"); J9 f4 b* x% Z
string s2=new String("Hello");
j# a3 [6 B0 O+ g8 u则(s1==s2)=false . D5 d# U- y# l# U6 z4 _- b/ q2 _9 [
8 t$ m F* ~$ l" ?4 V9 `3 s0 u如果: % A; I2 \) ?7 ~& f& r
string s1="Hello"; : j. i" G. a, ?
string s2="Hello";
5 T4 \+ |9 r, I) }6 O+ M' j则(s1==s2)=true; + H2 k, Q) U: S9 M6 a# x, z
因为他们指向的同一个对象。 3 L1 ^& v8 \& r% H$ S
# I0 N5 `: X. k
如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|