-
List允许重复并保持插入顺序,适用于需索引和重复数据的场景;Set不允许重复,用于确保元素唯一,其中HashSet无序、LinkedHashSet保持插入顺序、TreeSet支持排序,选择取决于是否需要去重、顺序或排序功能。
-
JavaIO是面向流的阻塞式处理,数据逐字节读写且线程阻塞,适合简单场景;NIO采用缓冲区与通道模型,支持非阻塞模式和事件驱动,通过Selector实现单线程管理多通道,适用于高并发网络应用,虽编程复杂但性能更高。
-
FileSystemException是JavaNIO.2中表示文件系统错误的异常,常见于文件移动、删除、创建等操作,如权限不足或文件被占用;虽为运行时异常,但建议在关键操作中显式捕获,优先处理其具体子类(如NoSuchFileException),再捕获通用FileSystemException,并结合日志记录操作类型、路径信息及错误消息,提升诊断能力,还可封装安全删除等通用处理方法以增强健壮性。
-
Iterator是遍历集合并安全移除元素的关键工具,通过hasNext()和next()方法遍历,用remove()避免ConcurrentModificationException;增强for循环简洁但无法安全删除元素;Java8的StreamAPI适合数据处理与转换,而Iterator在需修改集合时仍不可替代。
-
Java中Cloneable仅为标记接口,克隆逻辑由Object.clone()实现;需重写publicclone()并调用super.clone()获得浅拷贝,引用类型须手动深拷贝;推荐使用拷贝构造器或静态工厂方法替代。
-
JavaIO是阻塞式且低效于高并发,NIO通过非阻塞和复用机制提升性能。1.JavaIO基于流模型,每个连接需独立线程处理,导致高并发下线程开销大;2.NIO引入通道、缓冲区和选择器,实现非阻塞I/O,单线程可管理大量连接;3.文件操作上,NIO的内存映射和零拷贝减少数据拷贝与CPU开销;4.网络通信中,Selector监听多事件,SocketChannel与ServerSocketChannel配合实现高效连接处理;5.使用NIO需注意Selector空轮询、Buffer管理、Direct/HeapBu
-
Java中四类引用本质是GC回收时机控制机制:强引用绝不回收,软引用内存不足时回收,弱引用下次GC必回收,虚引用仅用于跟踪回收完成。
-
确实存在完全免费、无需注册、不设门槛的Java学习网站。菜鸟教程、how2j.cn、Oracle官方Java教程、LearnJava在线和廖雪峰的Java教程均无隐藏收费、强制升级或进度限制,内容覆盖全面且适合零基础学习。
-
Optional.flatMap用于展平嵌套Optional,避免Optional<Optional<T>>结构。与map不同,flatMap要求转换函数返回Optional,并自动拆层。例如链式获取用户地址城市时,user.flatMap(User::getAddress).map(Address::getCity)可安全处理空值,任一环节为空则整体返回empty,适用于级联Optional访问场景。
-
Java中switch语句支持byte、short、int、char、枚举、String及对应包装类,不支持long、double等;case需常量且不可重复,省略break会导致贯穿;default非必需但建议添加以增强健壮性。
-
IntelliJIDEA中出现“packagejava.timedoesnotexist”错误,根本原因是项目编译级别、JDK配置或Maven编译插件未统一设为Java11,导致java.time.Duration等Java8+新增API无法识别。
-
应根据需求选择:只需从某位置截取到末尾用substring(intbeginIndex),需指定起止范围则用substring(intbeginIndex,intendIndex),注意endIndex是不包含的结束索引,非长度,且须满足0≤beginIndex≤endIndex≤str.length。
-
Java21是最值得升级的LTS版本,尤其适用于I/O密集型服务、云原生微服务及长期维护项目;升级可解决线程资源瓶颈、GC停顿和并发代码可维护性差三大痛点。
-
System类是JVM与底层资源的桥接入口,非操作系统控制工具;安全调用System.exit()仅限主程序主动退出,应避免在库或Web中使用,优先用return或异常;System.in/out/err可替换但有全局和线程安全风险;currentTimeMillis()用于时间戳,nanoTime()专用于耗时测量。
-
Java项目中文乱码的根本原因是编码配置不统一,需确保源文件、编译器、JVM、IDE、终端五者编码均为UTF-8:1.IDEA中设置Global/Project/Properties编码为UTF-8并勾选转义;2.Maven配置maven-compiler-plugin的encoding为UTF-8;3.JVM启动时加-Dfile.encoding=UTF-8;4.终端需设为UTF-8(如Windows执行chcp65001)。