-
Date类不能直接用于日期计算,因其设计缺陷:月份从0开始、年份以1900为基点、方法非线程安全且已废弃;Calendar需clear再set字段以防状态残留;新项目应使用Java8+的不可变、线程安全的java.timeAPI。
-
<p>Java无“虚拟扩展方法”概念,实际指接口默认方法(defaultmethods),该特性自Java8引入,允许在接口中定义具体育实现的方法,实现类可继承或重写,具备多态性。默认方法用于兼容性演进接口,但受限于无法访问实现类私有成员,且不能为任意类扩展现有行为。Java未引入类似C#扩展方法的语法糖,因其强调显式性和安全性,推荐使用静态工具类(如StringUtils)、包装类、继承(非final类)或组合接口默认方法来实现功能扩展。理解机制差异比追求语法糖更重要。</p>
-
接口支持多继承,类只能单继承。当多个接口存在同名同参方法时,若返回类型兼容(如协变),实现类只需实现一次;若返回类型不兼容则编译报错。Java8默认方法冲突需子类显式重写并可通过接口名.super.方法名()调用特定父接口默认实现;静态方法和私有方法不参与继承,无冲突。设计时应避免命名歧义以提升可维护性。
-
throw用于方法内抛出异常对象,立即中断执行;throws用于方法声明处声明可能抛出的异常类型,仅作提醒。前者抛一个异常,后者可声明多个,且只对受检异常有强制约束。
-
在使用JAXP(如Xerces)解析XML时,若xsi:noNamespaceSchemaLocation等属性值为相对路径(如xsd/book.xsd),解析器会默认以user.dir为基准解析为绝对文件路径(如file:///home/user/xsd/book.xsd),导致定位失败;根本解决方法是显式提供XML文档的基准URI(baseURI),而非依赖默认回退行为。
-
必须继承Exception或RuntimeException,因JVM仅识别Throwable子类异常;继承Exception强制调用方处理,适合业务可控错误;继承RuntimeException则无需声明,适用于程序逻辑错误。
-
instanceof本质是运行时安全类型探针,只判断对象是否可能属于某类而不做转换;语法为objinstanceofType,左侧须为引用类型,右侧须为已编译类或接口名,null恒返回false,无继承关系时编译报错。
-
Java中ArrayList.clone()只做浅拷贝,新列表与原列表共享元素引用,修改副本中的自定义对象会影响原列表;修复需手动深拷贝或序列化方案。
-
配置Maven国内镜像可显著提升依赖下载速度,建议优先选用阿里云镜像,在settings.xml的<mirrors>中添加id为aliyunmaven、mirrorOf为central、url为https://maven.aliyun.com/repository/central的mirror配置,推荐使用用户目录下的~/.m2/settings.xml文件进行个性化设置,避免全局影响,配置后通过执行mvncleancompile观察下载地址是否变更,或使用mvnhelp:effective-
-
Collections类提供静态方法操作集合,如sort()排序、reverse()反转、max/min查找极值、binarySearch二分查找(需先排序)、replaceAll替换元素;通过synchronizedList等方法实现线程安全集合;使用unmodifiableList创建只读集合,防止修改。
-
宝塔面板无法一键部署可用JavaWeb环境,因其不支持Tomcat与JDK的完整联动,安装后常因JDK未配置、版本不匹配、JVM参数缺失、端口冲突及权限问题导致服务失败。
-
Java包装类为8种基本类型提供对象封装,位于java.lang包中,支持集合操作与泛型使用;通过自动装箱与拆箱实现基本类型与包装类间转换,但需注意性能开销及null导致的NullPointerException风险;包装类常用于集合存储、泛型参数、空值判断和工具方法调用,比较时应优先使用equals避免缓存陷阱。
-
在Jenkins无图形界面环境中调用Toolkit.getSystemClipboard()会因缺少X11DISPLAY变量而报错;本文提供Xvfb虚拟显示和JavaFXClipboard两种稳定、可落地的替代方案。
-
String拼接变慢是因为其不可变性导致每次拼接都新建对象并复制内容,10万次循环产生大量临时对象加重GC压力;StringBuilder通过可变字符数组和预扩容机制提升性能,但需注意线程安全、初始容量及toString()的内存开销。
-
finally中的return会覆盖try中的return并终结函数,即使try抛出异常也会被吞掉;Java禁止finally中return而Python允许,移植时易出错。