-
G1字符串去重由-XX:+UseStringDeduplication实现,仅作用于老年代中内容相同的byte[]/char[],StringTable不参与去重;jcmdVM.stringtable仅显示intern引用元信息,无法反映去重效果,需通过PrintStringDeduplicationStatistics日志确认。
-
codePointAt()能正确获取增补字符的Unicode码点,而charCodeAt()在遇到代理对时仅返回高代理值;codePointAt()自动处理代理对计算,且索引指向UTF-16单元而非用户感知字符位置。
-
默认equals()只比较引用,需重写并同步重写hashCode();Lombok@EqualsAndHashCode有字段限制和继承陷阱;Objects.equals防null更安全;record自动生成但依赖字段类型正确实现equals()。
-
打印页面当用户点击按钮时,浏览器会弹出打印对话框,允许用户选择打印机、页码范">
调用window.print()可触发浏览器原生打印对话框,需配合@mediaprintCSS隐藏非关键元素、优化布局适配A4尺寸,并利用onafterprint增强交互体验。
-
BigDecimal.scaleByPowerOfTen()仅执行十进制小数点位移(×10ⁿ),不处理物理单位换算;KB→GB需按1024²或1000²系数显式除法,不可直接调用该方法。
-
浅拷贝只复制顶层结构,嵌套对象共享引用;深拷贝递归复制所有层级,完全独立互不影响。核心差异在于是否切断引用链,浅拷贝修改嵌套内容会同步影响原对象,深拷贝则不会。
-
skip()实际跳过字节数可能小于请求值,需循环调用并校验返回值;推荐用FileChannel.position()替代,避免字符边界和性能问题。
-
Scanner类配合IO流可高效解析结构化文本,需选择合适数据源、设置分隔符、预判类型并处理边界;支持字符串和文件输入,推荐try-with-resources管理资源,灵活配置正则分隔符,安全读取需配合hasNextXxx()及缓冲清理。
-
用sealedinterface+record+switch记录模式可实现Java版ADT:编译期穷尽检查、杜绝非法状态、强制不可变性,但需严格满足permits显式声明、同模块导出、字段领域建模、无default分支等约束。
-
Collections.sort()配合自定义Comparator是最直接方式;需处理空值、越界及类型转换,如数值排序须将String转Integer/Double,升序用a.compareTo(b),降序用b.compareTo(a)或reverseOrder()。
-
位运算实现奇偶交替的核心是利用奇偶性驱动流程变化:用n&1快速判奇偶,flag=-flag实现符号翻转,state^=1翻转开关,异或交换变量,掩码分离奇偶位。
-
不能直接在@Transactional方法里sendMQ(),因为事务提交发生在方法返回后,此时sendMQ()执行时数据库事务尚未真正落盘,导致消费者查不到数据;应使用@TransactionalEventListener(phase=TransactionPhase.AFTER_COMMIT)确保事务已刷盘后再发消息。
-
接口是Java中实现高内聚、低耦合的关键,通过implements实现行为规范,支持默认方法扩展、静态工具方法及多继承,提升系统可维护性与扩展性。
-
不建议重写finalize方法处理线程池回收,因其不可靠、已废弃且被JDK18彻底移除;应使用shutdown()、shutdownNow()和awaitTermination()显式管理生命周期。
-
requiresstatic表示编译期必需、运行时可选的模块依赖,用于隔离调试模块:编译时保障类型检查,运行时不加载、不报错,结合DEBUG=false可实现编译期裁剪与构建阶段物理隔离。