-
为什么不用"UTF-8"字符串而要用StandardCharsets.UTF_8直接写"UTF-8"看似省事,但会埋下运行时异常风险:JVM不保证所有平台都支持该字符串名,尤其在嵌入式或精简版JRE中,newString(bytes,"UTF-8")可能抛UnsupportedEncodingException。而StandardCharsets.UTF_8是JDK7+内置的常量,编译期就确定存在,零异常、零反射、零字符串解析开销。常见错误现象:java.lang.U
-
多态通过父类引用调用子类重写方法避免重复分支逻辑,提升扩展性。如Shape抽象类定义area(),Circle和Rectangle各自实现,printArea(Shapes)统一处理,新增子类无需修改原有代码。
-
可通过FileStore获取磁盘总空间和可用空间并手动计算百分比,需用getUsableSpace()/getTotalSpace()、避免除零、注意文件系统保留空间及权限影响。
-
SeleniumWebDriver本身不提供原生的“窗口关闭事件监听”机制,无法像Swing的WindowListener那样实时捕获用户手动关闭浏览器窗口的动作;但可通过轮询检测UnreachableBrowserException异常来间接判断会话是否已失效。
-
ArrayList在add()时立即扩容:size等于数组长度时触发,无缓冲余量;首次add空数组扩容至10,后续按1.5倍(oldCapacity+oldCapacity>>1)增长,addAll则直接扩至所需最小容量。
-
核心类结构必须包含Book、BorrowRecord、Member三个类:Book含isbn、title、author和enum型status;Member含memberId和name;BorrowRecord关联二者并记录借还日期;ID统一用String,关系通过BorrowRecord维护而非Book持有Member引用。
-
Java要求子类构造方法必须显式或隐式调用父类构造方法,以确保继承链中每层对象状态按序初始化;super()必须是首语句,若父类无无参构造且子类未显式调用super(...)则编译失败。
-
Java调用C函数需声明native方法且无方法体,用System.loadLibrary加载动态库,JVM按签名匹配C函数;javac-h生成JNI头文件;C端需正确处理JNIEnv*、jobject及内存管理。
-
密封类用于定义受限几何图形体系,编译期封禁外部扩展、限定子类型集合,配合伴生对象工厂方法、when穷举匹配与不可变dataclass保障类型安全与状态一致性。
-
应优先用.equals()比较内容,==仅适用于基本类型或明确需比引用的场景;字符串比较须用.equals()或Objects.equals()防null;数值比较用compareTo()而非>、<。
-
Class文件合法性需同时满足魔数为0xCAFEBABE、主版本号在JVM支持范围内且为偶数;魔数校验格式,主版本号(如52/JDK8、55/JDK11、61/JDK17、65/JDK21)决定兼容性,次版本号通常为0。
-
Java中扩展record行为的核心思路是通过实现接口而非修改record本身,利用接口定义契约、默认方法、工具类和函数式编程实现多态、不可变更新与内聚逻辑。
-
Record类不能直接加字段但可加方法;必须用compactconstructor做校验,方法需保持不可变性,禁用Lombok,超出数据载体范畴应改用普通class。
-
Optional.or()是按需生成新Optional的方法,接收Supplier<Optional<T>>,仅空时调用;而orElse()返回T类型值,二者类型、语义及使用场景均不同。
-
CharArrayReader是Java中用于直接读取内存中char[]数组的轻量级字符输入流,无I/O开销、零拷贝、响应快,适用于需将已有字符数组作为Reader传入流式API的场景。