-
Java命令能直接运行的核心是将JDK的bin目录加入系统PATH。需先确认JDK已正确安装并定位bin路径,再依操作系统配置JAVA_HOME和PATH,最后验证java与javac双版本。
-
Java中List反转首选Collections.reverse(),它原地反转、时间复杂度O(n)、空间O(1),但仅适用于可变List实现类,不支持Set/Map、不可变集合及基本类型数组直接转换的列表。
-
泛型擦除后ArrayList<String>和ArrayList<Integer>运行时均为ArrayList。Java泛型是编译期特性,字节码无类型参数,JVM无法区分具体类型,故不能用于运行时类型判断或分支逻辑。
-
Java7默认不支持TLS1.2,但自OracleJDK7u95(仅限商业授权用户)及部分OpenJDK7发行版(如AzulZulu7)起,已通过系统属性jdk.tls.client.protocols显式启用TLS1.2。
-
Java中自动转换仅限数据范围不丢失的小→大类型(如int→long、char→int),boolean不可转换;强制转换需显式声明,但基本类型间不会抛异常,ClassCastException源于引用类型错误转型。
-
优先选ArrayList+Collections.sort();因TreeSet无法处理同分学生且灵活性差,而ArrayList配合Comparator可精准实现分数降序、姓名升序等复合排序,并支持后续多维度动态扩展。
-
Java使用java.util.zip包实现文件压缩与解压,核心类为ZipOutputStream和ZipInputStream。1.压缩文件:通过创建ZipOutputStream,遍历文件并为每个文件创建ZipEntry,将其内容写入流中;2.压缩文件夹:递归遍历文件夹内容,将每个文件及子文件夹以相对路径添加到ZipOutputStream中,保持目录结构;3.常见问题及解决:中文乱码可通过构造ZipOutputStream和ZipInputStream时指定UTF-8编码解决;资源未关闭应使用try
-
直接newThread()不适合高并发场景,因频繁创建销毁线程导致栈内存分配、GC压力、调度竞争及OS线程耗尽;Executor框架通过复用线程、统一管理生命周期、解耦任务提交与执行来优化。
-
Java菜单驱动程序核心是while循环+switch分支+Scanner输入,需处理异常、校验范围并模块化功能。
-
死锁发生的四个必要条件是互斥、占有并等待、不可剥夺、循环等待:互斥指资源不能被多个线程同时访问;占有并等待指线程持有锁又申请其他锁;不可剥夺指锁不能被强制释放;循环等待指多个线程形成闭环等待链。
-
饿汉式简单但可能浪费资源;2.懒汉式双重检查锁定需volatile保证线程安全;3.静态内部类实现懒加载且线程安全;4.枚举方式最推荐,防反射和反序列化破坏。
-
Collection接口定义了add、remove、contains、size、isEmpty、clear、toArray等通用操作,不提供get(intindex)或put(K,V)因需兼容无序/无索引集合;Java8新增removeIf、stream等default方法增强函数式能力。
-
Java方法重写必须同时满足四条件:方法名相同、参数列表完全一致、返回类型为协变类型、访问权限不更严格;@Override仅作编译检查,static和private方法不可重写。
-
捕获异常后必须记录、重抛或返回失败信号,禁用空catch;checked异常用于调用方可响应的场景,unchecked用于编程错误;资源关闭优先用try-with-resources;重抛异常须保留cause。
-
本文介绍如何在SpringBoot中优雅解决“Noqualifyingbeanoftype”错误,通过Map<String,Interface>方式动态注入指定名称的接口实现类,避免硬编码依赖、提升扩展性与配置灵活性。