-
DriverManager.getConnection()连不上数据库主因是URL参数缺失(如useSSL=false、serverTimezone=UTC)、数据库名拼错、端口被拦或MySQL未启动;JDK6+后无需Class.forName();应优先用PreparedStatement防SQL注入;Connection线程不安全,须按事务边界严格管理生命周期。
-
ArrayList遍历时修改会抛ConcurrentModificationException,因其迭代器采用fail-fast机制,通过校验modCount检测结构性修改;CopyOnWriteArrayList则通过写时复制+volatile引用实现安全并发读。
-
ClassValue是Java7引入的按Class关联缓存值的机制,因内部弱引用清理延迟或残留条目可能持有已卸载ClassLoader,导致类加载器泄露和MetaspaceOOM。
-
标准JavaWeb项目采用分层目录结构:src/main/java存Java类,src/main/webapp放WEB-INF/web.xml(传统)或static/templates(SpringBoot),资源路径错误会导致404或配置失效;web.xml中字符编码过滤器等配置在SpringBoot中已自动集成,可删除;JSP需置于webapp下且容器支持,否则返回源码;MySQL连接应将localhost改为127.0.0.1并配置useSSL=false。
-
Java不支持类的多重继承,仅允许单继承以避免菱形继承等问题,但通过接口(含default方法)、组合、委托、内部类及抽象类与接口组合等机制实现多源行为复用与灵活建模。
-
Java泛型是编译期类型检查机制,非语法糖;擦除后运行时无泛型信息,故禁用newT()、instanceofT、T.class及泛型异常捕获。
-
优先用isBlank()校验字符串是否为空,因它会trim后判断,避免"\t\n"被误判为非空;isEmpty()仅判长度,适用于对空白敏感场景。
-
为什么不用"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及内存管理。