重写Object类的方法
创始人
2024-03-08 21:58:45

55.重写Object类的方法

把equals()方法体自定义为我们自己的比较规则即可:两个学生学号和姓名相同,就认为是同一个学生对象

判断obj和this(当前学生对象)是否为同一对象

如果this当前学生对象和obj内存地址相同,==结果为true,就认为两者为同一对象

如果传进来的obj对象不是学生类型(Student)类型,结果一定是false
instanceof运算符: 用来判断某个对象是否为某种类型 ---  对象名instanceof 类型名

如果obj是Student类型

比较s和this的sid及name即可

  • 重写equals()方法

当有特殊需求,如认为属性相同即为同一对象时,需要重写equals()

快捷键:alt+insert选择Override Methos...

  • instanceof运算符的作用

instanceof用于判断一个引用类型所引用的对象是否是一个类的实例

Java.lang.Sting重写了equals()方法,把equals()方法的判断变为了判断其值。
总结:

Object类的方法可以根据需求自行重写

  • equals()
  • toString():输出对象信息时,默认调用
  • Java.lang.String重写了equals()方法,把equals()方法的判断变为了判断其值。也重写了toString()方法

instanceof用于判断一个引用类型所引用的对象是否是一个类的实例

//学生类Student类

package cn.com.objdemo;

import java.util.Locale;

//学生类
public class Student {
    //学号  姓名   年龄    体重
    private int sid;
    private String name;
    private int age;
    private int weight;

    public Student(){

    }

    public Student(int sid,String name,int age,int weight){
        this.sid=sid;
        this.name=name;
        this.age=age;
        this.weight=weight;
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }

    //把equals()方法体自定义为我们自己的比较规则即可:两个学生学号和姓名相同,就认为是同一个学生对象
    //判断obj和this(当前学生对象)是否为同一对象
    public boolean equals(Object obj) {
        if(this==obj){
            //如果this当前学生对象和obj内存地址相同,==结果为true,就认为两者为同一对象
            return true;
        }
        //如果传进来的obj对象不是学生类型(Student)类型,结果一定是false
        //instanceof运算符: 用来判断某个对象是否为某种类型 ---  对象名instanceof 类型名
        if(!(obj instanceof Student)){
            return false;
        }
        //如果obj是Student类型
        Student s=(Student) obj;
        //比较s和this的sid及name即可
        if(this.sid == s.sid && this.name.equals(s.name)){
            return true;
        }else{
            return false;
        }
    }

    //重写toString():对象信息不要返回类似内存地址的信息,而是返回学生姓名
    public String toString() {
        return this.name;
    }

    public static void main(String[] args) {
        Student s1=new Student(1,"小哈",23,35);
        Student s2=new Student(1,"小哈",23,35);
        //判断两个对象是否为同一对象: ==  equals()
        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));
        /*Student s1=new Student(1,"小哈",23,35);
        Student s2=s1;
        //判断两个对象是否为同一对象: ==  equals()
        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));*/

        System.out.println("_______________________");
        //如下两句代码作用相同,输出一个对象时,等同于调用了它的toString()
        System.out.println(s1.toString());
        System.out.println(s1);

        //String类不仅重写了equals()方法,还重写了toString()方法
        String s="test";
        //如下两句代码作用相同,输出一个对象时,等同于调用了它的toString()
        System.out.println(s.toString());
        System.out.println(s);
    }
}

相关内容

热门资讯

云南人烤茶,直接用火,就问你野... 原标题:云南人烤茶,直接用火,就问你野不野!——有一种叫云南的生活之365天也许你喝过烤茶但你试过用...
多国代表:祝贺中国! 新华社韩国釜山7月25日电(记者张粲 孙一然)印着“热烈庆祝景德镇申报世界遗产成功”字样的红色横幅,...
网商汇免费发布信息攻略 在网商汇平台,企业可免费发布产品信息,帮助拓展全国市场,触达更广泛客户群体。想知道具体如何操作吗?接...
王嘉尔回应任全球击剑大使 【#王嘉尔回应任全球击剑大使#】#王嘉尔计划2年内开办击剑学校# 7月25日,国际击剑联合会官宣@王...
王毅在马尼拉未与日方会见或交谈 据CGTN最新消息,此次在菲律宾马尼拉期间,王毅外长没有同日方会见的安排,也没有与日方进行交谈。此前...