面试题: == 和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 }