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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值