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));
}
}
