01Object的方法

面试题:== 和 equals()区别

一、回顾 == 的使用:

== :运算符

1.可以使用在基本数据类型变量和引用数据类型变量中

2.如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(可以数据类型不同)

int a = 10; int b = 10;
double c = 10.0;
char d = 10;
a == b == c == d 为true

如果比较的是引用数据类型变量:比较两个对象的地址值是否相同。即两个引用是否指向同一个对象实体

二、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()进行重写

重写的原则:比较两个对象的实体内容(即:对象的属性)是否相同


//手动实现equals方法的重写 或者类似getset方法、构造器一样直接快速生成
@Override
public boolean equals(Object obj){
  if(this == obj){
      return true;
  }
  if(obj instanceof Customer){
      Customer cust = (Customer)obj;
      //比较两个对象的每个属性是否都相同
//       if(this.age == cust.age && this.name.equals(cust.name)){
//               return true;
//       }else{
//               return false;
//       }
//或
return this.age == cust.age && this.name.equals(cust.name)
}else{
              return false;
}
  }
}

 

Object类中toString() 的使用

1.当我们输出一个对象的引用时,实际上就是调用当前对象的toString()

2.Object类中toString()的定义:


public String toString(){
  reurn getClass.getName()+"@"+Integer.toHexString(hashCode());
}

3.像String、Date、File、包装类等都重写了Object类中的toString()方法。

​ 使得在调用对象的toString()时,返回“实体内容”信息

4.自定义类也可以重写toString方法,调用此方法时,返回对象的“实体内容“


//自动重写 同上
@Override
public String toString(){
  return "Customer[name = " + name + ",age = " + age + "]";
}

 

posted @ 2022-04-12 21:02  Endless、  阅读(42)  评论(0)    收藏  举报