区别
运算符==
1、可以使用在基本数据类型变量和引用数据类型变量中:在基本数据类型中比较的时数值,和数值的数据类型没有关系,int可以和使用double;在引用数据类型中比较的是地址值是否相同,即两个引用是否指向同一个对象实体。
equals()方法
1、是一个方法,不是运算符
2、只能适用于引用数据类型,基本数据类型玩不了
3、Object类中定义的equals和==作用相同,比较两个对象地址值是否相同
4、String、Date、File、包装类等都重写了方法,用来比较两个对象的实体内容是否相同。
5、通常情况下,我们自定义的类如果使用equals的话需要会重写,原则就是实体内容是否相同。
customer cust1 =new Customer("Tom",21);
customer cust2 =new customer( "Tom",21);
System.out.println(cust1 ==cust2);//false
String str1 = new String("atguigu");
String str2 = new string( "atguigu");
System.out.print1n(str1 == str2);//false
system.out.print1n(cust1.equals(cust2));//false Object中和==作用相同
System.out.print1n(str1.equals(str2));//true String中对方法进行了重写所以和上面的不一样
重写equal方法
手动书写
public class test {
public static void main(String[] args){
Animal a=new dog();
a.age=10;
a.name="旺财";
Animal b=new dog();
b.age=10;
b.name="旺财";
System.out.println(a.equals(b));
}
}
class Animal{
int age;
String name;
public void shout(){
System.out.println("动物叫");
}
@Override
public boolean equals(Object obj) {
if(this==obj) return true;
if(obj instanceof dog){
dog a=(dog) obj;
if(this.age==a.age && this.name.equals(a.name))
return true;
else return false;
}
return false;
}
}
//true
IDEA自动添加
在需要添加的地方右击