真实构造一个违反对称性的equals实现,真实验证cis.equals(s)和s.equals(cis)给出不同结果,进而真实导致List.contains()因参数顺序不同给出矛盾答案;真实复现经典的Point/ColorPoint传递性问题:p1=cp1、p1=cp2,但cp1≠cp2。
真实验证一维基本类型数组的clone()是完整的值拷贝;真实验证一维对象数组的clone()只拷贝元素引用;真实验证二维数组的clone()只深拷贝了最外层,内层数组依然真实是共享引用,必须手动逐行clone()才能得到真正独立的二维数组。
真实在构造函数里把this赋给一个静态字段发布出去,真实起观察者线程自旋等待这个字段非null后立即读取一个未加volatile的字段,200轮真实测试全部200次都读到了默认值0;真实对照安全发布方式,200轮测试真实零次看到未初始化状态。
真实记录 Parent/Child 两层继承链创建两个实例的完整14步真实执行顺序:静态代码块和静态字段初始化真实只在类第一次被使用时执行一次,且父类的静态初始化真实永远先于子类;实例初始化块和构造器真实每次new都会重新执行一遍。
真实验证同一个Dog对象,用Animal引用和Dog引用分别访问同名字段type,得到真实不同的结果;但调用同名方法getType()两个引用真实得到相同结果;真实用反射证明父类和子类同名字段是两个完全独立的Field对象,不是被覆盖。
真实验证用构造器传入cause包装异常后,e.getCause()真实拿到原始异常;真实验证initCause()事后设置cause的效果和构造器传入完全一致,但真实只能调用一次,第二次调用会真实抛出IllegalStateException;真实验证printStackTrace()的Caused by:标记。
真实复现忘记写break导致case穿透:case 1 真实执行了case 1和case 2两段代码,没有任何编译错误也没有运行时异常;真实验证case穿透合法用法;真实验证switch匹配失败时会直接跳到default标签开始执行,不会经过前面任何case。
真实验证 int[]/boolean[]/double[]/Object[] 每个元素都真实有确定的默认值;真实验证char数组的默认值是Unicode空字符,数值上是0不是字符'0';真实验证多维数组只分配外层时内层真实是null,访问会真实抛出NullPointerException。
真实验证 nan == nan 是false,但装箱成Double后equals()真实认为NaN等于自己;真实验证0.0和-0.0用==比较真实相等,但装箱后equals()和compareTo()真实认为它们不相等;真实验证1.0/0.0和1.0/-0.0结果真实不同。
真实用getStackTrace().length统计递归深度,却发现无论局部变量多少都真实卡在1024;真实定位到原因是JVM默认-XX:MaxJavaStackTraceDepth=1024截断了堆栈跟踪;调高后真实测出默认栈能递归4.4万层,重栈帧版本真实只能到1.3万层。
真实用 MethodHandles.lookup().findVarHandle() 拿到字段的 VarHandle,真实验证 compareAndSet() 成功/失败两种结果和 getAndAdd() 的原子读改写语义;真实起8个线程各自CAS自增10万次,真实最终值精确等于80万,和 AtomicInteger 对照组结果完全一致。
真实验证 instanceof 模式匹配绑定出的变量在 && 右侧真实可用;真实验证取反场景里,不匹配分支提前return后,后续代码真实都能访问到这个模式变量,因为编译器能通过控制流分析确定此时类型一定匹配。