-
静态代码块不能替代构造函数前的实例初始化,它仅用于类加载时的一次性静态字段初始化,不感知实例;实例级统一预处理应使用私有基构造函数或Kotlin的init块。
-
Java模块化下资源读取失败主因是模块未用opens声明开放资源包,exports仅限public类,opens才支持资源加载等运行时操作,需在module-info.java中显式opens包并指定目标模块。
-
位运算符优先级低于算术运算符,易导致表达式错误分组;应始终用括号显式分组,启用编译器警告并结合单元测试验证边界场景。
-
成员代码块是类中用{}包裹、不在任何方法内的无名代码段,每次new对象时自动执行且位于所有构造函数体之前;编译器将其插入每个构造函数super()/this()调用之后,用于统一处理与参数无关的初始化逻辑。
-
ConcurrentModificationException由迭代时直接修改集合触发,Java通过fail-fast机制检测并发修改。使用Iterator.remove()、并发集合如CopyOnWriteArrayList、StreamAPI的removeIf或filter、加锁同步可避免该异常,核心是避免遍历时直接调用集合的结构修改方法。
-
在Java中使用HttpURLConnection设置User-Agent需在connect()前调用setRequestProperty("User-Agent",uaString),推荐使用主流浏览器真实UA字符串,但仅设UA不足以完全模拟浏览器,还需配合其他头部及请求策略。
-
Reference.reachabilityFence并非修复NPE的万能药,而是防止JVM过早判定对象不可达的编译器屏障;它仅在对象本应可达但因激进优化(如逃逸分析)被误回收时生效,且必须紧邻最后一次使用、在同一栈帧内调用,配合Cleaner或PhantomReference使用才有效。
-
POSITIVE_INFINITY是边界标记值,用于表示无上限或跳过约束,不可直接赋给速度参与物理计算;需配合isfinite()检查,在速度钳制、CCD开关等场景中作为配置语义值使用。
-
答案是:用jstack查RUNNABLE线程中是否反复出现getEntry或transfer栈帧,结合MAT分析heap.hprof确认next互指环。死循环表现为CPU100%、无异常、多线程卡在e=e.next且地址交替,根源是JDK7扩容时头插法与竞态导致A↔B环。
-
Java9起String改用byte[]+coder标志位实现紧凑字符串:全Latin-1字符时1字节/字符,含非Latin-1字符时自动切UTF-16模式2字节/字符,省空间不降功能。
-
多态通过继承、方法重写和父类引用指向子类对象实现,使同一方法调用在不同对象上产生不同行为。Java中多态的实现依赖JVM的动态分派机制,运行时根据实际对象类型通过虚方法表(vtable)确定具体方法版本,确保正确调用子类重写的方法。示例中Animal父类引用指向Dog和Cat子类实例,调用makeSound()时分别执行各自重写逻辑,输出"Woof!"和"Meow!"。该机制仅适用于可重写的实例方法,不适用于静态方法、私有方法或成员变量。多态广泛应用于参数类型统一、集合存储多态对象及框架设计中抽象行为的实
-
策略模式通过组合实现运行时算法切换,适用于频繁更换算法场景;模板方法通过继承固定流程结构,适用于流程稳定、步骤局部可变的场景。
-
@Retention(RetentionPolicy.RUNTIME)是前提,否则注解编译后即丢弃,运行时无法通过反射获取;必须搭配@Target指定作用位置,且注解元素需为常量类型、有合法默认值,反射读取时须判空并从实际声明类中获取。
-
Collections.synchronizedMap仅保证单个方法原子性,无法解决复合操作竞态条件;遍历时必须手动同步,否则抛ConcurrentModificationException;相比ConcurrentHashMap,其全表锁性能差且不支持高并发。
-
FalseSharing会因缓存行争用拖慢CPU:当线程修改同一缓存行内不同变量时,MESI协议频繁使对方缓存行失效;Java中字段紧凑排列易触发该问题,需用@Contended或手动填充确保64字节对齐。