Java 核心面试知识点整理
本文整理了 Java 开发中高频出现的面试问题,涵盖基础语法、集合框架、多线程并发、反射机制及 Web 技术栈等核心内容。以下内容基于实际开发经验总结,旨在帮助开发者梳理知识体系。
Java 基础
JDK 和 JRE 有什么区别?
JDK(Java Development Kit)是开发工具包,提供了开发环境和运行环境;JRE(Java Runtime Environment)是运行环境,仅包含运行所需组件。 简单来说,JDK 包含了 JRE,还多了编译器(javac)和调试分析工具。若只需运行程序,安装 JRE 即可;若要编写代码,则必须安装 JDK。
== 和 equals 的区别是什么?
== 对基本类型比较值,对引用类型比较地址。
equals 默认比较地址,但 String、Integer 等类重写了该方法,改为比较值。
String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x == y); // true,指向常量池同一对象
System.out.println(x == z); // false,new 开辟新内存
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true
注意: Object 类的 equals 源码逻辑如下,本质仍是 ==:
public boolean equals(Object obj) {
return (this == obj);
}
而 String 类重写了它,实现了字符数组的内容比对。
两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?
不对。哈希冲突是常见现象,hashCode 相同不代表对象相等。
String str1 = "通话";
String str2 ;
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());
System.out.println(str1.equals(str2));


