-
能,HashMap允许一个null键,通过特殊分支处理哈希计算与查找,get(null)返回对应值或null(无法区分不存在与值为null),而ConcurrentHashMap因并发安全原因禁止null键。
-
JRESystemLibrary默认无源码,需手动关联JDK安装目录下的src.zip;JDK9+因模块化,部分包(如javax.swing)源码不再包含在src.zip中,且内部类受模块限制,需额外配置或查官网源码。
-
抽象方法必须定义在abstract类中且无方法体,以分号结尾;不能用private、static、final修饰;接口中Java8+的抽象方法默认public且不可显式加abstract关键字。
-
Arrays.binarySearch搜不到明明存在的元素是因为它仅对已排序数组有效;未排序或降序数组(未配对应Comparator)会导致结果不可靠,返回负数表示插入点编码而非简单“未找到”。
-
Comparable负责类的自然排序,Comparator用于外部定义的多种排序;必须实现Comparable当类有唯一稳定大小关系;Comparator解决“一物多序”;二者不优先级,使用场景不同。
-
Java泛型采用类型擦除是为了兼容旧JVM和代码,编译时将泛型参数替换为Object或上界类型,运行时无法获取具体类型参数,但编译器通过类型检查和自动转型保障类型安全。
-
Java不支持真正的嵌套包,声明时只需一个package语句,且必须写全路径(如packagecom.example.util;),而非分段或多次声明。
-
IntelliJIDEA中OptimizeImports不生效,需启用“Optimizeimportsonsave”或“Removeunusedimportsonthefly”;Lombok/MapStruct等注解可能导致误判,可用//noinspectionUnnecessaryImport抑制;VSCode需RedHatJava扩展并配置java.import.order;Gradle/Maven多模块项目需同步依赖与SDK版本。
-
Safepoint是JVM暂停线程执行全局操作(如GC)前必须等待所有线程到达的安全检查点;线程仅在JIT插入的safepointpoll位置(如方法返回、循环末尾)主动检查并暂停,而非任意指令处中断。
-
IDE运行Java报错多因配置错误:主类未识别、类路径错、编码不一致、JDK版本不匹配或编译未生效,需依次检查源根标记、UTF-8编码设置、ProjectSDK与编译版本一致性及清理输出目录。
-
IntelliJIDEA中Lombok插件不生效需确认三件事:安装启用插件、开启AnnotationProcessing、构建工具中正确声明compile范围依赖;新版Lombok1.18.32与Jackson兼容问题需显式配置lombok.config;@Builder与@AllArgsConstructor同用易冲突,推荐@RequiredArgsConstructor+@Builder;单元测试中失效多因testclasspath缺失Lombok依赖或IDE缓存未更新。
-
浅拷贝复制对象时,基本类型值独立复制,引用类型仅复制地址引用,导致原对象与副本共享引用对象;深拷贝则递归复制所有引用对象,实现完全独立。选择依据包括对象可变性、嵌套复杂度及性能要求。
-
增强for循环底层调用迭代器,是编译期语法糖,等价于显式使用Iterator的hasNext()和next()方法;遍历时直接修改集合会抛ConcurrentModificationException。
-
在RESTAPI设计中,应严格区分资源标识(由@PathVariable承担)与资源状态数据(由@RequestBody承担);将路径参数“注入”到请求体对象中违背了关注点分离原则,不仅破坏语义一致性,也增加序列化/反序列化风险和维护成本。
-
Java中不能直接newLogger,因其构造方法为protected,须通过Logger.getLogger()获取实例;JUL配置繁琐性能一般,推荐SLF4J+Logback组合,解耦API与实现,支持灵活配置和高性能日志输出。