-
ArrayList底层是Object[]数组,非链表或哈希结构;默认容量10,不自动压缩空间,扩容为1.5倍,支持null和重复元素,随机访问O(1),增删平均O(n)。
-
computeIfAbsent适用于key不存在时按需初始化并缓存结果,如为新key自动创建ArrayList;不适用于覆盖已有key的值,此时应使用put或compute;其lambda不可抛受检异常,否则需包装为RuntimeException,且若抛异常会直接向外抛出。
-
ConcurrentLinkedDeque是基于CAS无锁算法实现的线程安全双端队列,适用于高并发低争用场景;支持两端高效增删、弱一致性迭代器、非实时size(),不允null元素,适合工作窃取、日志缓冲等最终一致性场景。
-
答案:Java会员签到系统包含注册、签到、查看记录和数据持久化功能,通过Member类存储会员信息,CheckInSystem类管理逻辑并读写文件,主程序提供菜单交互,实现控制台下的基本签到管理。
-
JavaGC采用可达性分析算法判定对象存活,从GCRoots(如栈中局部变量、静态属性、常量、JNI引用等)出发搜索引用链,不可达对象即被回收;循环引用不影响回收,软/弱/虚引用按策略处理。
-
是,但并非安全常量;它本质是不可变的公开契约,一旦发布极难修改,改值破坏二进制兼容性,改类型直接编译失败。
-
PrintWriter和PrintStream用于简化文本输出,前者是字符流,支持编码处理,适合文件写入;后者是字节流,常用于标准输出。
-
封装、继承、多态是Java面向对象三大特性。1.封装通过private隐藏字段,提供getter/setter安全访问,保护数据;2.继承使用extends复用父类非私有成员,建立类层次,支持单继承;3.多态通过父类引用指向子类对象,重写方法实现不同行为,运行时动态调用,提升灵活性。三者结合增强代码可维护性、扩展性与复用性。
-
ReentrantLock必须手动释放,需在finally块中调用unlock();lock()阻塞获取,tryLock()支持非阻塞或超时;公平锁性能差且仅影响队列线程;Condition实现多条件等待;多数场景优先用synchronized。
-
ScheduledExecutorService的核心优势在于线程池化定时调度,具备并发能力、异常隔离性、资源可控性和任务可管理性;支持scheduleAtFixedRate和scheduleWithFixedDelay两种周期调度模式;每个任务返回ScheduledFuture,支持取消、结果获取与优雅关闭;推荐显式构造ScheduledThreadPoolExecutor以符合规范并便于运维。
-
List的“有序”指按插入顺序保存元素并支持索引访问,而非自动排序;允许重复和null;需正确实现equals();ArrayList适合随机访问,LinkedList适合频繁首尾增删;subList返回视图而非副本;遍历时修改会触发ConcurrentModificationException。
-
继承使子类编译期获得父类非私有成员,支持运行时多态;但易致紧耦合,应优先组合与接口实现,仅当满足稳定“is-a”关系时使用。
-
ExecutorService是统一调度任务的接口,封装线程复用、队列缓冲、拒绝策略与优雅关闭能力;相比newThread()可避免资源失控与OOM风险。
-
本文介绍如何使用Gson库将JSON对象中所有键与对应值(支持数字和字符串)按原始顺序拼接成一个连续字符串,适用于扁平化、轻量级序列化或签名生成等场景。
-
ProviderNotFoundException表示ServiceLoader已定位SPI配置文件并解析出实现类名,但加载该类失败,原因包括类不存在、不可见、无公共无参构造器、ClassLoader隔离或模块系统未正确声明provides/uses。