欢迎访问我的网站
在Java中,==和equals的区别是一道非常经典的面试题,两者让对象来进行比较,那么他们有什么区别呢?
==
1.== 是比较的值
基本数据类型作比较时:比较的值
引用数据类型做比较时:比较的是地址值
equals
equals 是比较的对象【只要是对象就应该用equals】
1.最初定义在Object类中,比较对象的
2.每一个类型,比较对象的规则可能不能一样,每一个类可能去覆写
3.定义好的类没有覆写过equals方法,则会直接调用到了Object中的equals方法,那么本质还是在使用==比较
Demo
public class _05HomeWork {
public static void main(String[] args) {
//== 比较
Test test = new Test("山泥若",28); //实例化对象并给构造方法传入参数
Test test1 = new Test("山泥若",28);
boolean bl = test == test1; //将test和test1的引用地址值进行==比较
System.out.println("==的结果"+bl); //打印比较结果
test.name = "otto";
test1.name = "otto";
boolean b2 = test.name == test1.name;
System.out.println("==的结果"+b2);
//equlas比较
Test test2 = new Test("电棍",28); //实例化对象并给构造方法传入参数
Test test3 = new Test("电棍",28);
boolean b3 = test.equals(test1); //将test2和test3的引用地址值进行equals比较
System.out.println("equals的结果"+b3); //打印结果
test2.name = "深海鱼biss";
test3.name = "深海鱼biss";
boolean b4 = test.name.equals(test1.name);
System.out.println("==的结果"+b4);
}
}
class Test{
String name;
int age;
Test(){}
Test(String name,int age){
this.name = name;
this.age = age;
}
}