Object类

Object类

文章目录


Object类是什么?

  • Object类是所有类的鼻祖,所有类都直接或间接继承Object,万物皆对象,为了多态
  • Object中有两个经常被派生类重写的方法toString()和equals()方法
    调用Object类的toString()默认返回:类的全称@地址,没有参靠意义,经常被重写,toString()来返回属性值
  • 注意:String、StringBuilder等都重写了toString()方来返回字符串内容了
    调用Object类的equals()默认比较的还是==(即比较地址),没有参考意义,所以常常重写equals()来比较对象的具体属性
  • 注意:String类已经重写equals()来比较内容,但StringBuilder()类没有 重写equals()的原则:
    原则上要比较两个对象的属性值是否相同 两个对象必须是同一类型的, 若类型不同则返回false
/**
 *  输出 引用类型变量 时默认调用Object类的toString()方法
 *  该方法返回的字符串格式为:类的全程@地址(栈地址 --- 哈希码的无符号十六进制)
 *  但通常这个返回结果对我们的开发是没有意义的
 *  我们真正想输出的应该是对象的属性,我们认为Object欸的toString()的并不能满足我们的需求
 *  因此常常需要重写toString()来返回属性值
 */
Point p = new Point(100,200);
System.out.println(p);              //APIDay02.Point@1540e19d
System.out.println(p.toString());   //APIDay02.Point@1540e19dPoint类重写toString()@Override
public String toString() {
    return "Point{" +
            "x=" + x +
            ", y=" + y +
            '}';
}

System.out.println(p);              //Point{x=100, y=200}
System.out.println(p.toString());   //Point{x=100, y=200}
Point p1 = new Point(100 ,200);
Point p2 = new Point(100, 200);

System.out.println(p1 == p2); //==比较的是地址 ---false
System.out.println(p1.equals(p2));//默认使用的是Object的equals()----输出false

//Point类中重写代码在equals()方法代码
//Point类重写toString()后
@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Point point = (Point) o;
    return x == point.x && y == point.y;
}

System.out.println(p1.equals(p2));//true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值