java “==” 和 equals的区别
方法:public boolean equals(Object obj):
指示其他某个对象是否与此对象"相等"
这个方法,默认情况下比较的是地址值,比较地址值一般来说意义不大,所以我们要重写该方法。
怎么重写呢?
- 一般都是比较对象的成员变量值是否相同。
==:
- 基本 类型:比较的就是地址值是否相同
- 引用类型:比较的就是地址值相同
Object中的equals方法:
- 引用类型:比较的是地址值
- 基本类型:equals方法不能作用于基本数据类型的变量
String中的equals方法:
String类中的equals是重写Object类中的equals,这个类中的equal比较的是内容
public class Test{
public static void main(String[] args){
Student s1 = new Student("张三",27);
Student s2 = new Student("张三",27);
System.out.println(s1 == s2); // false
Student s3 = s1;
System.out.println(s1 == s3);
System.out.println("------------");
System.out.println(s1.equals(s2)); //false
System.out.println(s1.equals(s1)); // true
System.out.println(s1.equals(s3)); // true
}
}
总结:
== 基本类型,引用类型比较的都是地址值,equal默认情况下引用类型比较的是地址值,如String等其他类重写过后比较的都是内容,equals不能作用于基本数据类型上面