求大佬解答!!!多次启动程序 hashCode 输出值都相同
没有重写 hashCode 方法,默认调用的是父类方法(Object),Object 类 hashCode() 方法的实现调用的是底层C++写的方法
有 native
关键字标识的方法,就代表这个方法调用的是C++写的本地方法。这里可以理解为生成了一个随机的 hashCode 整数值
示例一,多次运行代码,输出的 hashCode 值是相同的
public class main {
public static void main(String[] args) {
main main = new main();
System.out.println(main);
// 多次运行程序,输出的 main.hashCode() 值都相同
System.out.println(main.hashCode());
}
}
示例二,加入多线程后,子线程每次输出的 hashCode 值是不同的,主线程每次输出的 hashCode 值依旧相同
import java.util.HashMap;
import java.util.Map;
public class main {
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0 ; i < 10 ; i++){
System.out.println("1");
try {
main main = new main();
System.out.println("子线程输出"+main);
System.out.println("子线程输出"+main.hashCode());
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();
main main = new main();
System.out.println("主线程输出"+main);
System.out.println("主线程输出"+main.hashCode());
}
}