-
1.for循环用于已知循环次数,如打印1到5;2.while先判断后执行;3.do-while至少执行一次,三者均通过控制条件实现重复操作。
-
Character.getNumericValue()仅支持ASCII数字、部分Unicode变体数字及带圈数字①–⑳,不适用于罗马数字解析,因其无上下文感知能力且单字符查表无法处理减法规则。
-
Timer.cancel()不能中断正在执行的TimerTask,仅清空队列并停止调度线程;需在run()中检查中断状态或使用volatile标志位,配合purge()和置null,或改用支持中断的ScheduledExecutorService。
-
Collections.sort()要求List元素实现Comparable或传入Comparator,仅支持List且不返回新集合;Stream.sorted()创建新集合;TreeSet/TreeMap天然有序但相等性依赖compareTo而非equals。
-
Collections.singleton()内存占用极小,因其返回内部静态类Collections$SingletonSet实例,仅持一个引用字段、无容量/哈希表/扩容机制,对象约16字节,不复制元素、无size字段、无同步开销。
-
catch(Exceptione)会吞掉NullPointerException等运行时异常,导致排查困难、状态错乱;应按场景捕获具体异常,如IOException、SQLException,并在顶层兜底时记录完整堆栈。
-
join()阻塞调用线程而非目标线程,依赖目标线程存活状态,底层通过synchronized锁目标线程对象并配合wait/notifyAll实现等待唤醒,必须先start再join才能确保同步。
-
finalize()已被废弃,因其不可靠:执行时机不确定、线程不安全、性能差且可能完全不调用;应改用Cleaner或显式资源管理(如try-with-resources)。
-
Java项目加基础定时任务的核心是使用Spring的@Scheduled注解并启用@EnableScheduling;需确保方法为public、无参、void返回,且所在类为SpringBean;默认单线程执行,可自定义ThreadPoolTaskScheduler实现并发。
-
CompletableFuture的“栈”是基于链表实现的无锁Treiber栈,用于存储回调任务,与JVM调用栈无关;result字段统一承载未完成、成功结果、异常、显式null四种状态;stack指向Completion链表头,每个节点在堆中固化执行上下文,通过postComplete遍历触发tryFire,完全脱离原始栈帧,确保回调不因方法返回而丢失。
-
Eclipse中直接导出为ZIP会导致导入后丢失包结构和构建路径;应使用“ExportasJAR”功能生成标准JAR文件,并确保Manifest中配置Main-Class,才能保证项目可导入、可编译、可执行。
-
MyBatis封装多对一关系靠单个对象属性(如privateUseruser)和association标签实现,而非集合变量;集合变量(如List<Order>)仅用于一对多场景。
-
Java类不能多重继承的根本原因是避免菱形继承导致的歧义,如方法/字段冲突、构造链混乱;而接口多实现安全,因只声明契约无状态;实践中应采用组合+接口替代。
-
happens-before是可见性契约而非时间先后,核心是“谁的结果必须被谁看见”;程序顺序、监视器锁、volatile变量、线程启动/终止四条规则最常用,缺一导致读不到最新值或出现半构造对象。
-
StreamAPI本身不生成情感分,仅高效聚合已标注的结构化数据;支持按维度平均分、时间趋势、加权差评识别、多维交叉分析四种电商业务场景。