-
直接装JDK21并配好JAVA_HOME只需三步:选MSI安装包、装到纯英文无空格路径、JAVA_HOME必须指向JDK根目录而非bin;否则java-version会报错,Maven/IDEA等工具也无法识别。
-
ImageIO.read()返回已解码的BufferedImage,直接调用getWidth()/getHeight()获取真实像素宽高;需判空防NPE,因损坏文件、不支持格式等会导致返回null。
-
Java17+通过类型模式(如caseStrings)简化类型检查与转换,Java21新增记录模式(如caseCircle(Point(varx,vary),doubler))支持嵌套解构,提升安全性、简洁性与表达力。
-
Charset.availableCharsets()返回SortedMap<String,Charset>,键为标准字符集名(如"UTF-8"),值为对应Charset实例;它仅包含JVM当前已加载注册的字符集,不保证穷举所有可能,且结果受JDK版本、厂商、操作系统及动态provider影响。
-
switch表达式需显式yield返回值,箭头分支单表达式自动yield,块分支须手动yield;枚举类型必须穷尽所有常量;逗号分隔case支持多常量;类型推导严格,null需匹配声明类型。
-
应慎用Executors.newFixedThreadPool,因其使用无界LinkedBlockingQueue易致OOM,生产环境须手动构建ThreadPoolExecutor,显式配置有界队列、拒绝策略及命名线程工厂。
-
Java的String.replace()仅支持字面量替换,若需基于正则表达式(如替换首个点号前的内容),必须改用replaceAll()或replaceFirst()方法。
-
Java编译器默认只为源文件中声明的public顶级类生成独立.class文件,且该类名必须与文件名(含大小写)严格一致;其余非public顶级类会被编译进同一.class文件中,不对外暴露。
-
导出CSV必须用try-with-resources关闭BufferedWriter,字段含逗号或中文需加英文双引号;导入不可用split(","),应使用OpenCSV或手动解析引号;统一指定UTF-8编码并处理BOM头,Contact应为POJO。
-
Predicate.or的核心价值是将判断逻辑升格为可命名、可复用、可组合的一等公民,提升语义表达力、支持延迟执行与上下文解耦、天然适配条件组合扩展,并使短路行为更可控。
-
责任链模式通过将校验、转换等逻辑封装为独立处理器,使变量按序流经各环节;每个处理器专注单一职责,通过next引用串联,支持动态组装、无副作用加工与语义化中断。
-
Termux无法直接运行JavaGUI程序,因其纯终端环境缺失XServer和DISPLAY变量,Java默认启用headless模式且openjdk-17不含AWT原生库;可行方案是通过proot-distro部署Ubuntu,安装XFCE与TightVNC,配置xstartup并启动vncserver,再在VNC桌面中安装OpenJDK并设置DISPLAY=:1运行Java程序。
-
transient关键字使字段不参与Java原生序列化,反序列化后为默认值;但对JSON序列化无效,且不提供安全保护,仅跳过序列化。
-
%s(%s)是Java中String.format()的两个连续字符串占位符,括号仅为SQL语法所需,并非格式化特殊符号;第一个%s替换表名,第二个%s替换字段定义列表,共同构成合法的CREATETABLE语句。
-
StringJoiner类用于灵活拼接字符串,支持自定义分隔符、前缀和后缀。1.创建时指定分隔符、前缀和后缀,如newStringJoiner(",","[","]");2.使用add()方法添加元素,支持链式调用;3.未添加元素时默认返回前缀+后缀,可通过setEmptyValue()设置空值输出;4.可与Stream结合,通过Collectors.joining()实现流式拼接,底层基于StringJoiner,语义清晰,适用于构建JSON、SQL等格式化字符串。