• 重写Object类的方法


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

  • 相关阅读:
    C++20 std::swap_ranges 用法小结
    04-react基础知识-路由
    Minio入门系列【7】Spring Boot集成Minio
    基于微信电影播放小程序系统设计与实现 开题报告
    概述UVM中的build、configure和connect【uvm】
    Vue3中如何通过内嵌iframe传递参数与接收参数
    谁说文艺青年开花店必亏,我用3年时间挣了20万
    关于时间片调度算法issue的分析与解决
    几种取时间的方法(附代码)
    易语言破解之绕VM思路
  • 原文地址:https://blog.csdn.net/m0_62084473/article/details/128137233