Java中==和equals的区别

在Java中,==和equals的区别是一道非常经典的面试题,两者让对象来进行比较,那么他们有什么区别呢?

==

1.== 是比较的值

​ 基本数据类型作比较时:比较的值

​ 引用数据类型做比较时:比较的是地址值

equals

equals 是比较的对象【只要是对象就应该用equals】

​ 1.最初定义在Object类中,比较对象的

​ 2.每一个类型,比较对象的规则可能不能一样,每一个类可能去覆写

​ 3.定义好的类没有覆写过equals方法,则会直接调用到了Object中的equals方法,那么本质还是在使用==比较

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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;
}
}
❤赏点钱让我买杯快乐水8❤