【Java 进阶01】快速掌握Object类的特点、toString方法、equals方法、Objects类

Objects类

Objects工具类:

  • 提供方法来操作对象,由一些静态的实用方法组成
  • 这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式比较两个对象
  • 比较两个对象:
    Objectequals方法容易抛出空指针异常
    Objectsequals方法进行了优化
    public static boolean equals(Object a, Object b):判断两个对象是否相等
 	public static boolean equals(Object a, Object b) {
    
      
 	//解决了空指针异常的问题
    return (a == b) || (a != null && a.equals(b));  
}

Object类

本文笔记,参考java课程图文

0.背景介绍

  • java.lang.Object类是Java语言中的根类,即所有类的父类,可以理解为老父亲一样的存在
  • 没有指定父类的类都默认继承Object类
public class NonClass /*extends Object*/ {
    
    
  	//...
}  

1.toString方法

public String toString():返回该对象的字符串表示
字符串内容:对象的类型+@+内存地址值
返回的结果:内存地址

直接使用输出语句输出对象名:通过该对象调用了其toString()方法
开发中需要重写:按照对象的属性得到相应的字符串

覆盖重写toString方法:
1.手动重写
Person类 两个属性:name 和age

public class Person {
    
      
    private String name;
    private int age;

    @Override
    public String toString() {
    
    
        return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
    }

    // 省略构造器与Getter Setter
}

2.自动重写:IntelliJ IDEA
Code菜单中右击,Generate...,也可以使用快捷键alt+insert,点击toString()选项。选择需要包含的成员变量并确定
在这里插入图片描述
在这里插入图片描述

2.equals方法

public boolean equals(Object obj):其他某个对象是否与此对象“相等”
参数:另一个对象
目的:判断两个对象是否相同
返回值:布尔类型 true or false

  • 默认比较方式:Object类中默认用==运算符比较对象地址 ==> 只要不是同一个对象,就是fasle
  • 覆盖重写equals方法:比较两个对象的内容

1.手动重写

import java.util.Objects;  

public class Person {
    
    	
   private String name;
   private int age;
   
   /*
   1.对象地址相同,证明同一个对象  == >  相同
   2.参数为空,类型信息不同   ==>  不同
   3.把传入的参数转换为当前类型(即Person类)
   4.基本类型相等,将引用类型交给
   java.util.Objects类的equals静态方法(不用)
   取用结果
   	*/
   	
   @Override
   public boolean equals(Object o) {
    
    
   
       // 如果对象地址一样,则认为相同
       if (this == o)
           return true;
           
       // 如果参数为空,或者类型信息不一样,则认为不同
       if (o == null || getClass() != o.getClass())
           return false;
           
       // 转换为当前类型
       Person person = (Person) o;
       
       /* 要求基本类型相等,并且将引用类型交给
       java.util.Objects类的equals静态方法取用结果
       age属性值相同且name属性值相同
       */
       return age == person.age && Objects.equals(name, person.name);
   }
}

2.自动重写:
IntelliJ IDEA中,右击Code部分,点击Generate…选项,也可以使用快捷键alt+insert,并选择equals() and hashCode()进行自动代码生成

Guess you like

Origin blog.csdn.net/weixin_44121966/article/details/118632617