码迷,mamicode.com
首页 > 其他好文 > 详细

string类的equals和==

时间:2016-08-20 11:24:10      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

==在八种原始数据类型中,判断的是两边的值是否相等。对于对象类型来说,判断的是内存地址,所以为true所满足的条件就是两边的引用指向同一个对象。

比如String s1 = "abcde"; String s2 = "abcde";这个时候如果判断两者是否==,值为true;这是因为两者指向同一个对象。

然而如果String s1 = "abcde"; String s2 =new String("abcde");则为false;因为指向的不是同一个对象。

equals()方法一般是继承与Object,在Object中,方法定义是这样的:

public boolean equals(Object obj) {
return (this == obj);

所以说如果没被改写,判断的也是内存地址,和==是相同的

然而需要注意的是String类中是改写了这个方法的

public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}

 

比较的是两者的字符串的内容是否相等。这样equals()和==在String里面就不是一个意思;

==成立的时候equals肯定成立

==不成立的时候,equals未必不成立

比如“  XXXX    ”.trim()和“XXXX”,是两个对象,所以一定不能==成立

但是equals是成立的。

string类的equals和==

标签:

原文地址:http://www.cnblogs.com/chuliang/p/5789836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!