==和equals()之间的区别
==和equals():
- ==用于比较基本数据类型时,比较的是值,比较应用类型的时候比较的是指向的地址值。
- equals()对于基本数据类型来说,没有equals方法,但是对于引用类型来说,equals比较的是的也是内存地址值,但是当类重写了equals方法之后就是比较值。
int a= 10 ;
long b = 10 ;
System.out.println(a==b) ; //true
double c =10 ; //在比较的时候类型自动转型
System.out.println(a==c); //true
String s1 = "HelloWorld";
String s2 = new String ("HelloWorld");
System.out.println(s1==s2); //false
String 的equals方法的重写
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String aString = (String)anObject;
if (coder() == aString.coder()) {
return isLatin1() ? StringLatin1.equals(value, aString.value)
: StringUTF16.equals(value, aString.value);
}
}
return false;
}
这个是Object类中的equals方法
public boolean equals(Object obj) {
return (this == obj);
}
- 通过观察源码可以知道,当一个类没有重写equals方法时默认用的是根类中的方法,底层应用的就是==,但是重写之后比较的就是内容。
- 所以比较是否相等时,尽量使用equals()方法