-
Java八种基本数据类型为byte、short、int、long、float、double、char、boolean,分属整数、浮点、字符、布尔四类,各有固定内存大小、取值范围及默认值,不随平台变化。
-
Java集合主要解决数组灵活性差、功能单薄的问题,提供自动扩容、丰富操作方法、多种数据结构及泛型类型安全,适用于日常业务开发。
-
Observable集合让集合本身可被监听,JavaFX中用ListChangeListener响应增删改移,需循环c.next()处理批次变更;普通ArrayList无通知机制,须用FXCollections.observableArrayList创建;KO的observableArray与JavaFX均不自动响应元素属性变化,需额外配置;监听器中避免耗时操作或递归修改。
-
ServiceLoader通过读取META-INF/services/下以接口全限定名命名的文本文件加载实现类,每行一个全限定名,依赖约定路径与UTF-8编码(无BOM),要求实现类有无参构造且非内部类。
-
Thread.suspend()和resume()因无条件挂起且不释放锁,极易导致死锁,故自JDK1.2起被弃用;应改用volatileboolean配合wait/notify或LockSupport实现协作式暂停。
-
Filter中setCharacterEncoding对GET无效,仅影响POST等请求体解码,且须在getParameter()前设置;RequestBody需用HttpServletRequestWrapper缓存字节以支持多次读取;Content-Disposition中文文件名应采用filename*+fallback双头方案。
-
根本原因是注解处理器未启用或Lombok依赖配置不正确。需启用IDEA的AnnotationProcessors、检查pom.xml或build.gradle中compileOnly+annotationProcessor配置、重启IDEA并清理缓存。
-
Map.merge(word,1,Integer::sum)是词频统计的正确用法,它原子性地实现“有则叠、无则建”,避免NPE和并发丢失;勿用get+put组合或错误lambda,慎混用compute。
-
javac-d参数用于按包结构组织字节码文件,指定.class输出根目录并自动创建匹配包路径的子目录;它保障JVM正确加载、分离源码与编译产物、支持类路径运行及jar打包。
-
时间复杂度取决于各层循环的迭代次数表达式,而非嵌套层数;例如三层循环可能为O(n×m),关键看每层是否依赖同一变量n。
-
Java编译器允许看似不可达的代码(如恒真条件后的else块)存在,是为了支持调试标志(featureflags)等开发实践,而非因逻辑分析能力不足;该设计符合JLS规范,兼顾可维护性与编译期检查的实用性。
-
反射频繁调用会触发动态代理类生成并加载至元空间,若卸载不及时将导致元空间OOM;需通过jstat、jcmd、jmap等工具确认问题,定位高频反射点,禁用膨胀机制(-Dsun.reflect.noInflation=true)或改用MethodHandle/VarHandle优化。
-
Task类应封装标题、描述、完成状态和创建时间,isCompleted设为private并提供complete()/uncomplete()方法;状态用TaskStatus枚举而非String;TaskManager统一管理集合操作并返回新集合;通过TaskRepository接口解耦存储,ID用UUID生成;CLI交互逻辑独立于业务模型。
-
本文介绍在JSON字段值本身为对象(如{"string":"value"})而目标Java字段声明为基本类型(如StringstringField1)时,如何通过Gson的TypeAdapter实现灵活、类型安全的反序列化,无需弃用Gson改用JSONObject。
-
URI与URL的本质区别在于:URI是统一资源标识符,URL是其子集且专用于定位资源;URI仅做语法解析和标准化,URL则支持打开网络连接。