zoukankan      html  css  js  c++  java
  • 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一致。

  • 相关阅读:
    more命令
    mktemp命令
    有效的括号字符串
    mc命令
    字符串相加
    Vue中虚拟DOM的理解
    chattr命令
    记近一年线上项目经验及架构变更记录
    微博AnalysisQl动态数据视图元数据设计
    搭建prometheus+grafana监控SpringBoot应用入门
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/11128423.html
Copyright © 2011-2022 走看看