-
Java8的java.time包解决了旧版日期时间API的缺陷,推荐使用新版API提升线程安全性和开发效率。1.LocalDate表示不带时间的日期,适合处理生日等场景;2.LocalDateTime处理无时区的日期时间,Instant用于时间戳;3.ZoneId和ZonedDateTime解决时区问题,支持跨时区转换;4.DateTimeFormatter实现线程安全的日期时间格式化与解析,并建议采用ISO标准格式避免错误。
-
本文详解如何利用Java8的StreamAPI,对整数列表先执行平方运算,再筛选出≤100的结果,最后安全计算其算术平均值,并处理空流等边界情况。
-
Java的assert默认关闭,需用-ea参数启用;仅用于开发期调试,不可替代运行时校验;触发时抛出AssertionError(属Error,非Exception),不应捕获恢复。
-
do-while循环强制执行至少一次,因是后置判断;while是前置判断,条件为假时一次也不执行。常见错误:误用while导致初始化被跳过,或未更新变量引发死循环。
-
新手应直接运行可部署的SpringBoot项目,推荐spring-petclinic等三个持续维护仓库,并注意JDK17+、正确配置pom.xml和application.properties以避免启动失败。
-
处理FileAlreadyExistsException需结合预防与异常捕获:操作前用Files.exists()检查目标是否存在,避免重复创建;使用StandardCopyOption.REPLACE_EXISTING允许覆盖文件;在Files.copy()、createFile()等操作中配合try-catch捕获异常,防止程序中断。1.常见于NIO.2的copy、move、create操作;2.属于检查型异常,需显式处理;3.可通过存在性校验、选项控制和异常处理三者结合实现稳健文件操作。
-
本文详解如何基于PDFBox高精度解析带表格结构的PDF文件,并导出为格式规范的Excel(.xlsx),准确还原列宽、行结构及空单元格,彻底解决传统文本提取导致的列错位问题。
-
应优先用组合代替继承,先确认“is-a”关系是否真实成立;若类间是“has-a”或“uses-a”关系,或违反Liskov替换原则、出现空实现或UnsupportedOperationException,则应拆分为接口+默认方法,或使用final类封禁继承。
-
HashMap在元素数量达12(16×0.75)时即触发扩容,而非填满才扩;存千条数据若用默认构造器将多次扩容致性能雪崩;扩容是数组长度翻倍重建,阈值按capacity×loadFactor向下取整计算。
-
SpringBoot3.0+要求JDK17或更高版本(官方推荐),而错误提示中classfileversion61.0对应Java14,但实际SpringBoot3.0.1已最低要求JDK17;当前使用JDK11导致Maven插件加载失败,需升级JDK并验证Maven配置。
-
本文介绍如何根据Obj对象的shape、size或二者组合,将List<Obj>动态分组为List<List<Obj>>,并适配不同业务类型(如type_1/type_2/type_3)的分组策略,使用Java8Stream+Collectors实现简洁、可读性强的分组逻辑。
-
Collections.shuffle()用于打乱List集合元素顺序,基于Fisher-Yates算法实现,保证每个排列概率相等;可传入Random实例控制随机性,适用于ArrayList等可修改List,不可用于Set、Map。
-
javac提示“不是内部或外部命令”是因JAVA_HOME未配置或PATH未包含%JAVA_HOME%\bin;public类名必须与文件名严格一致;运行“找不到主类”多因包路径、类路径或main签名错误;版本不匹配需用-source/-target或--release指定兼容性。
-
Java类命名须大驼峰且与文件名严格一致;包名全小写;字段优先privatefinal;构造函数禁业务逻辑,用构造器注入;方法遵循单一职责,参数少而语义清。
-
使用Jackson的ObjectMapper将Java字符串写入输出流时,会自动将其作为JSON字符串序列化,导致双引号和斜杠被转义;若目标是直接输出原始JSON文本,不应使用writeValue(),而应选择直写或结构化建模方式。