重写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);
    }
}

相关内容

热门资讯

重大通报作弊器!乐乐上海麻将a... 重大通报作弊器!乐乐上海麻将ai智能透视辅助插件,乐乐上海麻将本来存在有外挂(有辅助挂方略)1、很好...
分享给玩家透视挂!家乡大贰ai... 分享给玩家透视挂!家乡大贰ai智能透视辅助工具,家乡大贰其实真的有外挂(有辅助挂细节)家乡大贰破解侠...
科普攻略开挂!英豪娱乐城ai智... 科普攻略开挂!英豪娱乐城ai智能透视辅助教程,英豪娱乐城好像真的是有外挂(有辅助挂头条)1、英豪娱乐...
总算了解辅助器!和悦游戏ai智... 总算了解辅助器!和悦游戏ai智能透视辅助教程,和悦游戏确实是真的有外挂(竟然有辅助挂)暗藏猫腻,小编...
揭秘关于辅助器!九九麻将ai智... 揭秘关于辅助器!九九麻将ai智能透视辅助技巧,九九麻将一贯是有外挂(有辅助挂方略)1、用户打开应用后...