zoukankan      html  css  js  c++  java
  • java中的==、equals方法和hashCode()方法

    一、Java中的==、equals()方法和hashCode()方法联系

    1、== 比较的是地址

    1 String s1 = "nihao";
    2 String s2 = "nihao";
    3 
    4 // s1 == s2 因为s1和s2都是字面值"nihao"的引用,指向同一块地址,所以相等
    5 System.out.println(s1 == s2); // true

    2、equals()方法,比较内容,

    比如String的equals()方法,首先会比较s1和s3的引用地址是否相等,如果不相等,则比较两个字符串对象内的字符,只有完全相等,才返回true

    3、equals方法和hashcode方法的关系

    1. // 对同一个对象多次调用hashcode方法,总是返回相同的值
    2. // 如果a.equals(b),则a和b的hashcode相等
    3. // 如果a.hashcode==b.hashcode,则a.equals(b)可真可假
    4. // 如果a.hashcode!=b.hashcode,则a.equals(b)假

    4、一些准则

    * 若重写equals方法,有必须要重写hashcode方法,确保equals方法判断true的两个对象具有相同的hashcode返回值
    * 如果equals(Object obj)返回false,即两个对象“不相同”,并不要求对这两个对象调用hashcode()方法得到两个不相同的数。说的简单点就是:“如果两个对象不相同,他们的hashcode可能相同”

  • 相关阅读:
    linux设置开机服务自动启动
    Redis相关指令文档
    Redis配置文件详解
    redis在windows下的安装
    WIN2003+IIS6+FastCGI+PHP5.3的安装配置
    研究生生活点滴一
    数据链路层
    C++中的static成员
    在构造函数中调用构造函数
    Java和C++的不同
  • 原文地址:https://www.cnblogs.com/wylwyl/p/10233809.html
Copyright © 2011-2022 走看看