-
SimpleDateFormat非线程安全,多线程复用会导致结果错乱,应局部新建、加锁或改用DateTimeFormatter;parse()抛ParseException主因是字符串与模式不匹配,如时区缺失、月份超限、yy解析四位年份等;安全格式化需用局部变量指定模式及时区;DateTimeFormatter不可变、线程安全、API清晰,是Java8+推荐替代方案。
-
双向循环链表通过闭环结构和统一指针操作,高效模拟内核调度机制管理变量生命周期:支持O(1)首尾定位、LRU淘汰、任意节点遍历及上下文快速切换,兼顾确定性延迟与资源可控性。
-
Lambda表达式无独立类型,其类型由上下文目标类型决定;编译器根据函数式接口方法签名反向验证参数、返回值及异常兼容性,实现约束驱动的隐式转型。
-
计数数组法可在O(n)时间内找出众数,适用于值域集中且可控的整型数组;通过映射元素到索引累加频次,再扫描计数数组获取最大频次对应值,支持负数偏移与多众数扩展。
-
Scanner.hasNext(Pattern)是阻塞的,因System.in底层为阻塞流,无法超时或取消等待;真正非阻塞需用NIO、Console.ready()或线程+超时封装,但推荐重构交互逻辑避免此需求。
-
Java无法直接用do-while实现非阻塞I/O轮询通讯,因JVM缺乏对UART/I²C/BLE等外设的原生非阻塞支持;do-while仅用于带退出条件的有限重试或数据拼包,真正的低功耗需依赖中断、回调或底层epoll/poll机制。
-
Java类加载机制分加载、链接(含准备)、初始化三阶段:加载时仅载入字节码并生成Class对象,静态变量未分配内存;准备阶段为其分配内存并设默认零值;初始化阶段执行<clinit>方法,按源码顺序赋值静态变量和执行静态块。
-
GZIPOutputStream用于网络传输前动态压缩数据流,需正确包装、调用finish()、确保接收端支持解压;适合文本等高冗余数据,对JPEG等已压缩格式无效;HTTP需设Content-Encoding:gzip,Socket需双方约定协议。
-
Java静态初始化严格按源码顺序执行且仅一次;若某静态字段初始化触发其他类加载,原类未完成初始化的字段仍为默认值,易致空指针。
-
String.matches()仅能基础校验邮箱格式,无法验证真实存在性;推荐正则为"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$",需预判null、空格并trim处理。
-
答案:Maven多模块项目依赖管理核心在于父POM中使用<dependencyManagement>统一版本、合理划分模块实现高内聚低耦合、通过<exclusions>排除冲突传递依赖,并利用mvndependency:tree等工具分析依赖树,结合BOM引入、版本属性化管理等策略,确保依赖一致性与项目可维护性。
-
SynchronousQueue不是队列而是“手递手”通道,因它不存储元素,offer()和poll()总失败,仅put()与take()成对阻塞同步;size()恒为0,适用于严格配对的线程间一次性数据传递。
-
正确使用逻辑与短路运算符&&可提升性能并避免异常。当第一个操作数为false时,后续操作不会执行,因此应将空值检查等轻量判断放左侧,方法调用或复杂计算放右侧,如if(obj!=null&&obj.getValue()>0)可防止NullPointerException。与非短路运算符&不同,&&仅在必要时计算右侧,而&始终执行两边,易导致异常或性能浪费。此外,不可依赖右侧表达式的副作用(如日志输出),因其可能不被执行。合理组织条件顺序能确保代码安全高效,核心原则是:前面为假,后面不看。
-
StampedLock不支持直接writeLock→unlockWrite→readLock的锁降级,必须用tryConvertToReadLock()在持有写锁时尝试转换;失败则需先unlockWrite再readLock,否则出现竞态窗口。
-
单字节8位可存8个独立开关状态,关键在于用左移生成唯一标志位(如1<<i),通过&读、|=置、&=~清、^=切,严格边界检查确保安全高效。