12.Object类

介绍

Object是所有类的始祖类,没有被明确的指出超类默认就是继承该类

方法

equals方法

该方法默认检测两个对象是否具有相同的引用,返回true或false
但很多时候这种比较方式显得不那么合理,所以很多时候就需要我们来重写equals方法

  • Java语言规范要求equals方法具有下面的特性
    • 1.自反性:对于任何非空引用x,x.equals(x)必须返回true
    • 2.对称性:x.equals(y)时y.equals(x)
    • 3.传递性:x.equals(y)、y.equals(z)返回true---->x.equals(z)
    • 4.一致性:如果没有其他变化,反复调用应该返回同样的结果
    • 5.对于任意非空引用x,x.equals(null)返回false
  • 编写一个完美的equals方法的建议
    • 1.显式参数命名为otherObject,稍后需要转换为一个叫做other的变量
    • 2.检测this与otherObject是否引用同一个对象:if(this == otherObject) return true;(一句优化,如果为相同引用则直接返回true,这比全部都一个一个比较域代价要小得多)
    • 3.检测otherObject是否为null,如果为null返回false(检测是否为空)if(otherObject == null) return false;
    • 4.比较this与otherObject是否属于同一个类
      • 如果equals语义在每个子类中有所改变就用getClassif(getClass() != otherObject.getClass()) return false;
      • 语义在每个子类中都统一则用instanceof:if(!(otherObject instanceof ClassName)) return false;
    • 5.将otherObject转换为对应类类型的变量 (ClassName)otherObject
    • 6.开始对所有需要比较的域进行比较(用==比较基本类型域、用equals比较对象域)return field1 == other.field…
    • ps:如果在子类中重新定义equals,就要在其中包含调用super.equals(other)
      对于数组类型的域,可以使用静态的Arrays.equals方法检测相应的数组元素是否相等
hashCode方法(散列码)

hashCode的作用原理和实例解析

toString方法

用于返回表示对象值的字符串

  • 绝大多数的toString方法遵循的格式:类的名字+方括号括起来的域值
  • 写一个toString方法:
public String toString(){
    return getClass().getName()
        +"[name=" + name
        +",salary=" + salary
        + "]";
}
  • ps:子类的toString方法只要调用super.toString()然后再加上方括号部分.
  • 注意:对象与一个字符串操作符“+”连接起来就会自动的调用tostring方法(所以x.toString()和""+x效果一样)
  • toString方法是一种非常有用的调试工具,建议每一个自定义类都加入一个toString方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值