-
Java程序通过main方法的String[]args数组接收命令行参数,按空格分隔、索引从0开始;需注意shell解析差异、无内置选项区分机制,推荐用Picocli等库封装解析并校验。
-
super仅在子类构造器、实例方法和字段初始化中有效,必须位于构造器首行,不能用于静态上下文;可访问父类非private成员,但字段访问不触发多态,方法调用跳过当前重写。
-
List.copyOf不能替代newArrayList(list),因为它返回不可修改的浅拷贝视图,不支持增删操作,不隔离原列表变更,也不防御元素内部状态被修改。
-
能,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缓存未更新。
-
浅拷贝复制对象时,基本类型值独立复制,引用类型仅复制地址引用,导致原对象与副本共享引用对象;深拷贝则递归复制所有引用对象,实现完全独立。选择依据包括对象可变性、嵌套复杂度及性能要求。