-
为什么Collections.swap不能交换Arrays.asList返回的列表?因为Arrays.asList返回的是一个固定大小的、不支持结构性修改的列表实现(Arrays$ArrayList),而Collections.swap内部会尝试调用set方法——这在该实现中会抛出UnsupportedOperationException。常见错误现象:Exceptioninthread"main"java.lang.UnsupportedOperationExcept331 收藏 -
charAt()遍历最直接,但需防索引越界;Java字符串不可变、底层为char[],该方法快且语义清晰,空串或i<=length()易致越界。322 收藏 -
匿名内部类访问局部变量必须为final或effectivelyfinal,根本原因是栈帧销毁后局部变量不复存在,而内部类对象仍存活;编译器将其值快照为隐式字段存入堆中,故需确保值不变。139 收藏 -
Java中try-catch用于捕获处理运行时异常,避免程序意外终止;需将可能出错代码放入try块,对应处理逻辑写在catch块,finally用于资源清理;多catch时子类异常须在父类前;JDK7+推荐try-with-resources。220 收藏 -
StampedLock乐观读必须配合validate()校验戳有效性,否则无效;validate()是轻量volatile读,stamp为0时恒返回false;禁用非标准\_validate命名;适用读多写少且读操作极快场景。316 收藏 -
栈帧由JVM在执行invokestatic等字节码时自动创建并压入线程栈,与方法一一对应,生命周期由JVM控制;其结构(如局部变量表大小、操作数栈深度)在编译期确定并写入class文件的Code属性中。350 收藏 -
Java不支持直接将方法引用存入泛型集合,需通过自定义或标准函数式接口明确类型签名;本文详解如何在Java17+中安全构建List<Function>并批量执行。345 收藏 -
Collectors.toList()返回可变ArrayList,支持重复和null;toSet()返回无序去重Set,遇null抛NPE;toMap()遇重复key抛DuplicateKeyException;joining()遇null直接抛NPE;应依约束选方法。429 收藏 -
%s适用于任意对象,%d仅限整数,%f仅限浮点数;修饰符顺序为标志→宽度→精度→类型;中文对齐应避免%宽,优先用\t或手动计算视觉宽度。340 收藏 -
本文详解如何为Circle类设计add(Circleother)方法,使其将当前圆与传入圆的面积之和,映射为一个等效的新圆,并原地更新当前圆的半径,支持链式调用。461 收藏 -
类是模板,对象是按模板创建的具体实例;类不占内存,对象才分配堆内存并拥有独立状态,静态成员则被所有对象共享。262 收藏 -
现代Java开发中绝大多数情况无需手动配置CLASSPATH;JDK5后默认包含当前目录,Maven/Gradle等工具自动管理依赖,显式设置易引发冲突,仅遗留场景如老脚本、IDE运行配置或旧容器中可能遇到。374 收藏 -
SpringBoot通过@Bean注解在配置类中声明工厂方法,可完全替代XML配置或手动工厂调用,实现接口与其实现类的解耦注入,无需额外配置类即可完成面向接口的依赖注入。347 收藏 -
Filter中forward()失效因响应已提交,需先检查response.isCommitted();若已提交则重定向,未提交方可forward并手动设状态码和异常属性。161 收藏 -
Java可变参数是语法糖,编译后为数组,但必须是方法最后一个参数且唯一;不能与同名数组方法重载;调用时字面量会生成临时数组,传入数组则直接复用引用。409 收藏