标签:art eof 判断 equals not coder public this tps
==作比较,如果是值类型,则是比较值是否相等;如果是引用类型的话,则是判断两个对象的内存地址是否相同。
注:对几个基本数据类型来说,是作为常量在方法区中的常量池里面以HashSet策略存储起来的。在常量池中,一个常量对应一个地址,因此不管是多少个变量的值相同(int a=1,b=1),它们的地址是指向同一个的(a和b的地址相同)
int a=1;
int b=1;
System.out.println(a==b); //a与b的地址相同,值相同
equals用于引用类型对象之间的比较。equals()比较的不一定是对象的内容,有两种情况:
1.没有重写equals(),这时比较的还是对象的内存地址
//这是Object类中的equals()
public boolean equals(Object obj) {
return (this == obj);
}
2.重写了equals(),这时就要看具体的业务场景
//这是String类中的equals()
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;
}
//这是Integer类中的equals()
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
这篇文章参考了CSDN的CoderLC的文章
标签:art eof 判断 equals not coder public this tps
原文地址:https://www.cnblogs.com/RedMapleLeafAndGreenTea/p/14531427.html