• Java-相等


    一致性相等

      equals的返回结果与{@link java.lang.Comparable} 的返回结果一致.注意.null不是任何类的实例.instance.equals(null)都是false,java.lang.Comparable使用null比较抛出异常.

      如果没有实现一致性相等,那么在使用Sorted Set或者Sorted Map时会出现怪异的结果(没有指定比较器).几乎所有java 核心库对{@link java.lang.Comparable} 的实现都是一致性相等,

      除了BigDecimal. 精度不同,但是返回的是0,equals返回false.

    public static void main(String[] args) 
        {
            BigDecimal b1 = BigDecimal.valueOf(4);
            BigDecimal b2 = BigDecimal.valueOf(4.00);
            System.out.println(b1.compareTo(b2));//0
            System.out.println(b1.equals(b2));//false
            
            SortedSet<BigDecimal> sets = new TreeSet<>();
            sets.add(b1);
            boolean res = sets.add(b2);
            System.out.println(res);//false
        }

    另外,相等有几个概念

    1:自反性

      x.equals(x)永远都是true.

    2.传递性

      x.equals(y) 是true,y.equals(z) 是true,那么 x.equals(z) 也是true

    3.对称性

      x.equals(y) 是true 那么 y.equals(x) 也是true

    4.一致性

      多次调用 x.equals(y) 始终返回 true 或始终返回 false

    以上x,y,z均不等于null.

    equals和hashcode的协定

    1.俩个对象equals如果相等,hashCode必然一致。

    2.equals如果不等,不要求hashCode一致。

  • 相关阅读:
    使用AD你应该避免的五个错误
    卸载常用组件
    学会批处理,用心学很容易
    VI的用法
    安装Linux版VNC 企业版
    【3】淘宝sdk的下载和安装
    【7】创建一个自己的模板
    【6】网店模板目录及文件介绍
    【11】淘宝sdk的DOM、CSS规范、Widget规范(这个Widget规范差不多就是网页效果)和HTML规范
    【2】认识淘宝sdk模板
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/11128423.html
Copyright © 2020-2023  润新知