-
答案:图书管理系统通过Book类和Library类实现增删查借功能,使用ArrayList管理图书,提供菜单交互。
-
Files.walk()提供安全简洁的全路径遍历,但需try-catch处理IOException;应避免纯递归防StackOverflowError,改用显式栈;Files.find()可深度优先早终止,walk()需后过滤;Windows中文/长路径需启用系统长路径支持并妥善处理异常。
-
String.intern()返回常量池中已存在字符串的引用,内容相同即复用;若不存在则将当前字符串内容放入池并返回其引用,与是否为字面量无关。
-
Timestamp转Date会丢失纳秒精度吗不会丢失,但Date本身不存纳秒——它只精确到毫秒。当你调用newDate(timestamp.getTime()),拿到的是截断纳秒后四舍五入到毫秒的值,比如2024-01-0112:00:00.123456789会变成2024-01-0112:00:00.123。实操建议:如果业务只要求毫秒级(比如日志时间、普通报表),直接用timestamp.getTime()构造Date没问题如果下游依赖纳秒(如金融交易流水号生成、分布式事件排序),别转
-
Java普通方法调用开销大,需保存PC、压栈、传参、跳转、执行、弹栈、恢复上下文;add(inta,intb)类方法调用开销常超总耗时60%,虚方法因查vtable等更慢。
-
Java中多态调用发生在运行时,通过invokevirtual指令结合虚方法表动态分派;需满足父类引用指向子类实例、方法非static/final/private、子类正确重写三个条件。
-
ThreadLocal.get()后不remove()会导致内存泄露,因其key为弱引用而value为强引用,当ThreadLocal被回收后value仍驻留ThreadLocalMap中,在线程池场景下长期累积引发OOM。
-
Eclipse2024+默认不支持中文界面,因官方自2021年起取消内置中文包,改由BabelLanguagePack插件提供,需通过EclipseMarketplace精确匹配版本安装,且依赖JDK17+。
-
Java泛型提升类型安全、可读性和复用性:1.编译期检查类型,防止ClassCastException;2.自动类型推断,消除显式转换;3.通用代码设计,提高复用性;4.明确API意图,增强可读性。
-
Arrays.asList返回的List不能增删,因其是Arrays的静态内部类,直接包装原数组且不支持结构修改;基本类型数组会整体作为单个元素,需转包装类型;String[]需防null;泛型中易因类型擦除失真。
-
CountDownLatch适用于一个或多个线程等待其他线程全部完成后再执行的场景,如主线程等待子任务初始化、并发测试计时、微服务组件就绪等待;它仅作门控,不可重用,需确保初始计数与countDown调用次数一致,并推荐使用带超时的await防止永久阻塞。
-
本文澄清一个常见误解:对“递归调用solve移除所有相邻重复字符”的算法,其真实时间复杂度为线性O(n),而非部分资料误判的O(n²),关键在于solve函数单次即可消除全部相邻重复段,且外层循环最多执行一次。
-
“组合优于继承”指多数场景应优先用“has-a”关系替代“is-a”关系,以降低耦合、增强可测性与系统稳定性;继承适用于明确“is-a”且父类专为扩展设计的少数情况。
-
ConcurrentHashMap1.7通过Segment数组实现分段锁,每个Segment是独立的ReentrantLock+小型哈希表,put仅锁定对应Segment,get完全无锁;但存在哈希倾斜退化、size()阻塞等问题,故1.8改用CAS+synchronized锁单个Node并引入树化优化。
-
是的,Java中所有异常都是Throwable的实例。它们是运行时堆上的对象,可被创建、传递、捕获、检查和序列化;只有继承Throwable的类才能被throw或catch;Exception和Error是其直接子类,自定义异常必须继承其中之一。