== 和equals()的区别

 面试题: == 和equals()的区别
* 一,回顾 == 的使用:
* == 运算符
* 1.可以使用在基本数据类型变量和引用数据类型变量中
* 2.如果比较的是基本数据类型变量,比较的是两个变量保存的数据是否相等。(不一定类型相同,因为存在自动类型提升)
* 如果比较的是引用数据类型变量,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体。
* 二,equals()方法的使用
* 1.是一个方法,而非运算符
* 2.只能适用于引用数据类型
* 3.Object类中equals()的定义:
* public boolean equals(Object obj){
return(this == obj)
}
* 说明Object类中定义的equals()方法和 == 作用是相同的:比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体
*4.像String,Date,File、包装类等都重写了Object类中的equals()方法,重写以后比较的不是两个对象的地址值是否相同,而是比较两个对
* 像的 “实体内容” 是否相同。
*5.通常情况下,我们自定义的类如果使用equals()方法的话,也通常是比较两个对象的实体内容是否相等,那么,我们需要
* 对Object类中的equals()方法进行重写。
* 重写的原则:比较两个对象的实体内容是否相同
 1 package com.fu.exer05;
 2 
 3 /**
 4  * 面试题: == 和equals()的区别
 5  * 一,回顾 == 的使用:
 6  *  == 运算符
 7  *  1.可以使用在基本数据类型变量和引用数据类型变量中
 8  *  2.如果比较的是基本数据类型变量,比较的是两个变量保存的数据是否相等。(不一定类型相同,因为存在自动类型提升)
 9  *    如果比较的是引用数据类型变量,比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体。
10  * 二,equals()方法的使用
11  * 1.是一个方法,而非运算符
12  * 2.只能适用于引用数据类型
13  * 3.Object类中equals()的定义:
14  *       public boolean equals(Object obj){
15           return(this == obj)
16         }
17  *        说明Object类中定义的equals()方法和 == 作用是相同的:比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体
18  *4.像String,Date,File、包装类等都重写了Object类中的equals()方法,重写以后比较的不是两个对象的地址值是否相同,而是比较两个对
19  *     像的 “实体内容” 是否相同。
20  *5.通常情况下,我们自定义的类如果使用equals()方法的话,也通常是比较两个对象的实体内容是否相等,那么,我们需要
21  *   对Object类中的equals()方法进行重写。
22  *   重写的原则:比较两个对象的实体内容是否相同
23  *
24  */
25 public class Equals {
26     private int age;
27     private String name;
28     //手动实现的equals()的重写
29 //    public boolean equals(Object obj){
30 //        if(this == obj){
31 //            return true;
32 //        }
33 //        if(obj instanceof Equals){
34 //            Equals equ = (Equals) obj;
35 //            //比较两个对象的属性是否都相同。
36 //
37 //        }
38 //        return false;
39 //    }
40 
41     //自动实现
42 
43 
44     @Override
45     public boolean equals(Object o) {
46         if (this == o) return true;
47         if (!(o instanceof Equals)) return false;
48 
49         Equals equals = (Equals) o;
50 
51         if (age != equals.age) return false;
52         return name != null ? name.equals(equals.name) : equals.name == null;
53     }
54 
55     @Override
56     public int hashCode() {
57         int result = age;
58         result = 31 * result + (name != null ? name.hashCode() : 0);
59         return result;
60     }
61 
62 }

 

== 和equals()的区别

上一篇:结构化程式和自定义函数


下一篇:k8s1.20.5