zoukankan      html  css  js  c++  java
  • 解析equals(Object obj)和compareTo(T obj)

    背景:最近在研究静态扫描的东西,遇到一个规则:"equals(Object obj)" should be overridden along with the "compareTo(T obj)" method

             然后就想深度扒一扒equals和compareTo有什么区别

    1.java.lang.Object是所有类的父类,java.lang.String类继承了Object类,String类是final类,是不能被继承的,

    Object类的成员方法equals(Object obj)用来比较两个对象是否相等:对于任何非null的引用x和y,当且仅当x和y指向同一个对象的时候,x.equals(y)返回true。

     2.java.lang.Comparable是一个接口,成员方法compareTo(T o)是从顺序上来比较本对象跟指定的对象,当本对象小于指定的对象,返回负整数,当本对象等于指定的对象,返回0,当本对象大于指定的对象返回正整数,

    实现必须确保对于所有的x和y,sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) (意味着如果y.compareTo(x)抛出异常,那么x.compareTo(y)也一定会抛出异常

    实现必须确保关系是可以传递的,x.compareTo(y)&&y.compareTo(z)>0意味着x.compareTo(z)>0

    最后实现必须保证 x.compareTo(y)==0,代表对于所有的z ,sgn(x.compareTo(z)) == sgn(y.compareTo(z))

    强烈推荐但不是严格要求(x.compareTo(y)==0) == (x.equals(y)),一般地任何实现Comparable接口的类如果违法这个规则需要明确地指出来这个问题,更推荐的说法是:这个类有自然的顺序跟equals是一致的。

    在前面的描述中,记号sgn(expression)是数学的正负号函数,定义了如果表达式的值是负数,返回-1,表达式的值是0,返回0,表达式的值是整数,返回1

    int compareTo(T o)

    Parameters:

    o - the object to be compared.
    Returns:
    a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
    Throws:
    NullPointerException - if the specified object is null
    ClassCastException - if the specified object's type prevents it from being compared to this object.
  • 相关阅读:
    关于背景图片的处理
    node ,npm和nvm 版本的管理
    验证码倒计时
    css效果文字多了就...
    git 的入门使用到团队协作
    ajax模拟获取json
    angularjs入门(二)
    重新学习angularjs--第一篇(入门)
    html的结构-厂子型的布局
    分享html5的一个拖拽手法
  • 原文地址:https://www.cnblogs.com/zhaijing/p/9497396.html
Copyright © 2011-2022 走看看