
问JDK、JRE、JVM 三者之间的关系是什么答JDK 是 Java 开发工具包面向 Java 开发者JDK 完整包含 JRE 与开发所需工具组件JRE 包含 JVM 与程序运行所需核心类库JVM 是 Java 虚拟机负责解释执行字节码记忆口诀JDK 含 JREJRE 含 JVM问JDK、JRE、JVM 分别的核心用途是什么答JDK 用于 Java 程序的开发与调试JRE 为 Java 程序提供运行环境JVM 执行字节码实现跨平台特性记忆口诀开发 JDK运行 JRE执行 JVM问Java 实现跨平台的核心载体是什么答核心载体是 JVM Java 虚拟机JVM 屏蔽了底层操作系统的差异同一份字节码可在多平台 JVM 运行记忆口诀跨平台核心是 JVM问Java 中创建对象的几种方式答new 关键字创建可调用任意构造器反射创建支持无参 / 有参 / 私有构造器clone 方法克隆需实现 Cloneable 接口反序列化创建需实现 Serializable 接口记忆口诀new 反射克隆反序列化问Class 和 Constructor 的 newInstance 方法有何区别答Class.newInstance 仅支持 public 无参构造器Constructor.newInstance 支持任意参数与私有构造前者归属 Class 类后者归属 Constructor 类记忆口诀Class 限无参Constructor 全兼容问clone 与反序列化创建对象有什么要求答clone 需实现 Cloneable 接口并重写 clone 方法反序列化需实现 Serializable 序列化接口记忆口诀克隆要 Cloneable序列化 Serializable问final、finally、finalize 的区别是什么答final 是 Java 修饰符限制类、方法、变量等不可变finally 是异常处理块无论是否异常均会执行finalize 是 Object 方法对象 GC 回收前会被调用三者分属不同机制核心用途完全不同记忆口诀final 定finally 执finalize 收问final 关键字修饰不同元素的作用是什么答修饰类类为最终类不可被其他类继承修饰方法方法不可被子类重写覆盖修饰变量为常量仅能完成一次赋值修饰对象引用不可变对象状态可修改记忆口诀final 限继承重写修改问为什么不推荐使用 finalize 方法释放资源答执行时机不固定无法保证及时执行不当使用会引发性能问题与内存风险官方已标记过时不推荐生产环境使用记忆口诀finalize 无保障不推荐用问 和 equals 的区别是什么答 是 Java 运算符支持基本与引用类型比较基本类型用 直接比较存储的数值是否相等引用类型用 比较对象的内存地址是否相等equals 是 Object 方法默认比地址可重写逻辑记忆口诀 比地址值equals 可重写问String 类中 和 equals 的比较规则有何不同答String 用 比较字符串对象的内存地址String 重写 equals比较字符内容是否完全一致字面量赋值的 String常量池复用地址相同记忆口诀String 比地址equals 比内容问未重写 equals 方法时它和 有什么区别答未重写 equals默认继承 Object 类的实现Object 的 equals 底层直接使用 实现二者均比较引用类型的对象内存地址记忆口诀未重写 equals等价于 问两个对象的 hashCode () 相同则 equals () 也一定为 true 吗答hashCode 相同equals 不一定为 true哈希碰撞会导致不同对象 hashCode 重复equals 为 truehashCode 必须完全相同该规则是 Java 官方的通用约定记忆口诀hash 同equals 未必同问Java 中 hashCode 与 equals 的核心约定是什么答equals 返回 truehashCode 必须相同hashCode 相同equals 不一定返回 true重写 equals 必须同步重写 hashCode 方法记忆口诀重写 equals 必重写 hashCode问为什么会出现 hashCode 相同但 equals 不同的情况答hashCode 是哈希运算值存在哈希碰撞哈希算法无法保证不同对象值绝对唯一如 Ma 与 NBhashCode 均为 2484记忆口诀哈希碰撞导致 hash 值重复问 和 、|| 和 | 的区别是什么答 是短路与首条件 false 则截断后续判断 是逻辑与始终执行所有条件判断语句|| 是短路或首条件 true 则截断后续判断| 是逻辑或始终执行所有条件判断语句记忆口诀短路断后续全量全执行问为什么 不会触发除零异常而 会答 首条件 false 时直接截断不执行后续代码 无论首条件结果都会执行所有条件代码除零运算被截断则不会触发算术异常记忆口诀短路截异常全量必执行问业务条件判断优先使用哪种运算符答日常业务优先使用 、|| 短路运算符短路运算符可避免无效执行提升代码效率可截断异常风险代码提升程序健壮性记忆口诀业务优先用短路