|
该用户从未签到
|
熟悉C++的人对于两个字符串比较的代码一定很了解: ; U- L3 P6 d1 P" F \3 ~
(string1==string2) , R3 M9 ?+ }' e& {1 y
但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false
/ N9 b! S4 v4 hJava中必须使用string1.equals(string2)来进行判断
4 y' I% D+ [1 \" g6 p
/ H; v0 z- n6 ]. s: s& B补充
3 ?: m2 A J8 _( U2 E如果:
" i" U& f, u' P4 `% D. l6 Pstring s1=new String("Hello");
* `* U' A% N8 S- Nstring s2=new String("Hello"); 4 k9 A: x4 ^( z% Y) `$ W
则(s1==s2)=false
8 m) }1 s& s1 Y) T" @9 t1 M
' b% X) H, T3 w# p: `- Y如果:
$ M3 H1 X; d' Bstring s1="Hello"; 4 v4 E9 S, e& r
string s2="Hello";
4 e4 r( [. V5 Q2 B则(s1==s2)=true;
: y# o' Z# w& d# n因为他们指向的同一个对象。 / |+ S0 d$ Y0 e
- w E# e% c! |& z
如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容 |
|