第 5 章 工具链与工程骨架:把实验环境固化成基础设施
本章目标搭一个能撑住全书 45 章实验的 Gradle 9 多模块工程;彻底搞清楚jvmToolchain/jvmTarget/--release三者的区别(90% 的人搞混);建立四套工作流:反编译对照、字节码检查、JMH 基准、静态检查;掌握 Gradle 构建性能优化的正确
第 3 章 从 Java 到 Kotlin:设计哲学、演进史与迁移决策
本章目标理解 Kotlin 为什么存在——它不是"更好的 Java",而是一次有明确取舍的重设计;掌握 Kotlin 与 Java 的 30+ 条语义差异,以及每条差异背后的 JVM 代价;看懂 Kotlin 的演进史,从而能读懂任何一个新特性的"来路";获得一套可执行的迁移决策
只重写 equals,你的 HashMap 就废了
有一个 bug 特别典型:代码里往 Map 里放了一个对象,然后拿一个"看起来一样"的对象去取,取出来是 null。你打开调试,看到两个对象的字段完全一致,equals 也返回 true,但 get 就是拿不到。这个现象的原因几乎总是同一个:重写了相等判断,但没重写哈希计算。
彻底搞懂equals和hashCode!底层原理+重写规范
只要你写Java代码,equals() 和 hashCode() 是永远绕不开的两个方法。无论是日常开发去重、对象比对、集合存储,还是面试高频八股提问,这一对方法都是重中之重。
HashMap总出问题?多半是没搞懂hashCode和equals的约束
写 Java 久了,最怕那种“本地跑得好好的,一上线就炸”的隐性 Bug。特别是跟集合打交道,比如 HashMap、HashSet 用得挺顺,突然某天往里面塞了个自定义对象,结果发现:要么元素重复了,要么死活 get 不到值。
面试官让讲equals和hashCode的约定,我从HashMap扩容讲到他点头
前年跳槽的时候碰到一个面试官,开场就问「equals 和 hashCode 有什么约定」。这题我心里咯噔一下,不是因为难,是因为太基础了,基础到你随便答两句就会被归到「背八股的」那一档。