当前位置 : 主页 > 编程语言 > java >

hashcode\equals\==的区别http://blog.csdn.net/ahgaojie451/article/details/47443051

来源:互联网 收集:自由互联 发布时间:2021-06-28
AAndApp.java package algorithms;import java.util.Scanner;public class AAndApp { //小trip,idea抽取方法的快捷键是ctrl+alt+m public static void main(String[] args) { self1(); } //hash code、equals和“==”三者的关系: //1.如果
AAndApp.java
package algorithms;

import java.util.Scanner;

public class AAndApp {
    //小trip,idea抽取方法的快捷键是ctrl+alt+m
    public static void main(String[] args) {
        self1();
    }

    //hash code、equals和“==”三者的关系:
    //1.如果是基本类型,没有hashcode和equals方法,基本变量的比较方式就只有==,;
    //2.如果是引用类型,由于在java中所有变量定义都是一个指向实际存储的一个句柄(即一块
    // 不确定大小的内存),在这里==是比较句柄的地址,而不是句柄指向的实际内存中的内容
    // ,如果要比较实际内存中的内容,那就要用equals方法,但是!!!

    //如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址,
    // 因为自定义的类是继承于object,而object中的equals就是用==来实现的,你可以看源码。

   // 那为什么我们用的String等等类型equals是比较实际内容呢,是因为String等常用类已经
   // 重写了object中的equals方法,让equals来比较实际内容,你也可以看源码。
    //hash值是根据对象属性进行计算的散列值,如果两个对象属性完全相同,则hashcode相同。
    private static void self1() {
        String a = "admin1";
        String b = "admin1";
        System.out.println(""+a.hashCode());
        System.out.println(""+b.hashCode());
        System.out.println("a == b"+a == b);
        System.out.println("a.equals(b):"+a.equals(b));
    }
}
网友评论