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.如果
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)); } }