知其然,知其所以然
Java 内部原理 2026-08-24

Random(seed) 真实验证:相同seed真实产生逐位相同的随机数序列

真实验证两个用相同seed构造的Random对象,各自调用10次nextInt()真实产生逐位相同的序列;真实验证setSeed()真实能把Random对象重置回某个seed对应的初始状态;真实验证Collections.shuffle()配合固定seed的Random真实能让洗牌结果完全可复现。

Java Random 测试 动画演示
Java 内部原理 2026-08-23

Integer.parseInt() 真实验证:溢出真实抛异常,不像int运算那样静默回绕

真实验证Integer.parseInt()支持2到36进制的解析;真实验证解析出超过Integer.MAX_VALUE的字符串真实抛出NumberFormatException,而不是像int运算那样静默回绕成负数;真实对照Integer.MAX_VALUE+1这种int算术运算真实是静默回绕。

Java Integer 异常 动画演示
Java 内部原理 2026-08-22

final字段与clone()真实验证:super.clone()真实不需要手动赋值就能正确复制final字段

真实验证clone()方法体内完全没有手动给final字段赋值,super.clone()真实照样把final字段的值正确复制到了新对象上;真实验证final修饰的数组引用字段,clone()后两个对象真实依然共享同一个数组,修改数组内容真实互相影响。

Java clone final 动画演示
Java 内部原理 2026-08-21

Thread.yield() 真实验证:调用它的线程真实完成次数只有对照组的0.2%

真实测出每次循环都调用Thread.yield()的线程,在300毫秒内真实只完成了约165万次循环,而不调用yield()的对照线程真实完成了9亿多次;真实验证yield()调用期间main线程持有的synchronized锁真实完全没有被释放,证明yield()和锁释放是两件完全不相关的事。

Java 线程 调度 动画演示
Java 内部原理 2026-08-20

Arrays.binarySearch() 真实验证:对未排序数组的结果真实是未定义的,不会报错提醒

真实验证Arrays.binarySearch()找到目标时返回真实索引,找不到时返回值真实遵循-(插入点)-1这条编码规则;真实验证对未排序数组调用binarySearch(),真实不会抛出任何异常提醒你数组没排序,只会真实默默给出一个不保证正确的结果。

Java 数组 算法 动画演示
Java 内部原理 2026-08-19

Collections.nCopies() 真实验证:三个位置真实是同一个对象,不是三份拷贝

真实验证Collections.nCopies(3, sharedObj)返回的List真实每个位置都是同一个对象引用;真实验证修改这个共享对象后,列表所有位置真实同步变化;真实验证nCopies()返回的List本身真实不可变,set()真实抛出UnsupportedOperationException。

Java Collections 陷阱 动画演示
Java 内部原理 2026-08-18

Files.walk() 真实验证:300次不关闭调用,文件描述符真实精确多出300个

真实用lsof统计进程真实打开的文件描述符数量,300轮不关闭的Files.walk()调用后,文件描述符数真实精确增加了300个,1:1对应每一次未关闭的调用;真实验证手动close()全部Stream后,文件描述符数真实恢复到循环开始前的水平。

Java NIO 资源泄漏 动画演示
Java 内部原理 2026-08-17

文本块真实验证:最后一行的缩进真实决定了公共前导空白去除多少

真实验证文本块自动去除公共前导空白并保留相对缩进,去除的量真实由结束分隔符所在行的缩进决定;真实验证行尾空白默认被自动去除,但用\s转义真实能显式保留一个空格;真实验证用\能真实阻止插入换行符。

Java 文本块 语法 动画演示
Java 内部原理 2026-08-16

sealed class 真实验证:未在permits列表里的类真实编译不过

真实用sealed interface声明一个封闭接口,真实写一个没有出现在permits列表里的类去实现它,真实编译失败,错误信息真实是class is not allowed to extend sealed class;真实用反射验证isSealed()和getPermittedSubclasses()的真实结果和源码完全一致。

Java sealed 类型系统 动画演示
Java 内部原理 2026-08-15

Record 紧凑构造器真实验证:在构造器里修改参数,真实字段值也会跟着变

真实验证Record紧凑构造器能真实做参数校验,非法值真实抛出异常;真实验证在紧凑构造器里对参数变量重新赋值(把负数修正为0),这次修改真实会体现在最终的字段值上;真实验证反射看到的字段依然是final的,构造器签名和普通构造器没有区别。

Java Record 构造器 动画演示
Java 内部原理 2026-08-14

equals()里用getClass()还是instanceof真实验证:两种写法对子类相等性给出真实相反的答案

真实验证用instanceof写的equals(),父类实例和坐标相同的子类实例真实被判定为相等,且真实保持对称;真实验证用getClass()==写的equals(),即使坐标完全相同父类和子类实例真实永远不相等;真实复现instanceof版本在子类新增字段时真实容易打破对称性的经典陷阱。

Java equals 继承 动画演示
Java 内部原理 2026-08-13

compareTo与equals不一致真实验证:TreeSet真实把BigDecimal("2.0")和("2.00")当成同一个值

真实验证BigDecimal("1.0")和("1.00")的equals()真实认为不相等但compareTo()真实认为相等;真实验证HashSet真实把两者当成两个不同元素都存了进去,而TreeSet真实认为是同一个元素;真实验证TreeMap能用不同scale的key查到值,HashMap不能。

Java BigDecimal 集合 动画演示
京ICP备2026067502号-1京公网安备11010502063487号