zoukankan      html  css  js  c++  java
  • hashcode和==

    public class Main {
    public static void main(String[] args) {
    Object o=new Object();
    System.out.println(o+" "+o.hashCode());
    }
    }//会输出java.lang.Object@6bc7c054   1808253012,前一个字符串的@后面的十六进制数和第二个字符串的数值相同。

    hashcode方法实现了将类的实例经过hash算法以后得到的整数值进行返回。而equals方法则是直接将类的实例进行比较。

    hashcode方法对于普通类型对象和包装类型对象而言,是对内容的哈希。因此两个相同类的构造函数的对象的哈希码也不同。

    但是==比较的只是地址,而非内容。

    public class HelloWorld {
    public static void main(String []args) {
    Object o1=new Object();
    Object o2=new Object();
    System.out.println(o1.equals(o2));
    }
    }//输出false,因为o1和o2两个对象内容完全不相等,因此hashcode的结果也不相等。

    public class Main {
    public static void main(String[] args) {
    String s="a"+"ss";
    String s1="ass";
    String s2=new String("ass");
    System.out.println(s1.hashCode()+" "+s2.hashCode()+""+(s1==s));
    }
    }//s1不等于s2,但s等于s1,三者的哈希码都相等。

  • 相关阅读:
    [bzoj3524]Couriers
    [bzoj2789]Letters
    [bzoj4318]OSU!
    [luogu4570]元素
    [hdu6600]Just Skip The Problem
    [bzoj5025]单调上升路径
    [bzoj4557]侦察守卫
    [hdu5379]Mahjong tree
    [bzoj2957]楼房重建
    [noi253]A
  • 原文地址:https://www.cnblogs.com/riverer/p/2020_06_22_001.html
Copyright © 2011-2022 走看看