-
JavaEndorsed机制仅替换JDK6–8中java.和javax.下标准扩展类(如jaxb-api.jar),通过-Djava.endorsed.dirs指定目录优先加载,JDK9+已彻底移除;升级至JDK11+需显式添加JakartaEE依赖并处理包名迁移。
-
Lambda只能访问effectivelyfinal变量,因编译后会捕获局部变量的副本,为避免数据不一致,要求变量初始化后不可变;可访问final或未被重新赋值的局部变量、实例/静态字段、方法参数及数组引用(元素可改),但不能修改非final局部变量;可通过AtomicInteger、数组包装或终端操作绕过限制,核心是保证闭包内变量状态的一致性。
-
读写锁适用于读多写少场景,通过分离读锁(共享)和写锁(独占)降低线程争用;ReentrantReadWriteLock支持锁降级但不支持升级;性能优势依赖读写比例与临界区长度,写占比超15%~20%时可能劣于普通锁;公平模式可缓解饥饿但增加开销。
-
Java中控制对象可变性的核心是让对象状态创建后无法修改,需通过类final、字段privatefinal、防御性拷贝、避免this逃逸及合理使用不可变API等协同实现。
-
Java中try-catch用于捕获处理运行时异常,避免程序意外终止;需将可能出错代码放入try块,对应处理逻辑写在catch块,finally用于资源清理;多catch时子类异常须在父类前;JDK7+推荐try-with-resources。
-
Java中ExecutorService需通过Executors工厂方法或手动构建ThreadPoolExecutor创建;常用方式包括newFixedThreadPool(固定线程数、无界队列)、newSingleThreadExecutor(单线程串行)、newCachedThreadPool(弹性线程、SynchronousQueue)和newScheduledThreadPool(定时任务);自Java9起推荐显式构造ThreadPoolExecutor以控制参数。
-
Java不支持类的多重继承,仅允许单继承以避免菱形继承等问题,但通过接口(含default方法)、组合、委托、内部类及抽象类与接口组合等机制实现多源行为复用与灵活建模。
-
当需元素唯一且按插入顺序遍历时应选LinkedHashSet;它用哈希表+双向链表实现,遍历稳定O(n),顺序可预测,而HashSet无序、TreeSet按自然序排序。
-
<p>Runnable+Lambda是最轻量的线程启动方式,只需一行代码newThread(()->{/dosomething/}).start()即可;须调用start()而非run(),且外部变量需为final或effectivelyfinal;适合短小任务,耗时操作应改用ExecutorService。</p>
-
标记整理算法是老年代碎片整理的标准实现路径,通过标记存活对象、计算新地址、移动并更新引用三步闭环,将存活对象紧凑排列至堆一端,生成连续空闲空间,从而高效支持大对象分配。
-
ReentrantLock提供比synchronized更灵活的锁控制,支持手动加锁释放、可重入、公平锁、tryLock及中断响应机制,需始终在finally中unlock避免死锁。
-
ObjectOutputStream不会导致基础类型“擦除”,因其写入原始类型时用writeXXX()方法直接输出二进制值,类型明确且可精准还原;若用writeObject()则自动装箱为包装类,属类型升级而非擦除。
-
JVM是Java程序运行的核心环境,负责加载字节码、内存管理、解释或JIT编译执行,并实现跨平台能力;不安装JVM则无法运行Java程序,版本不匹配会抛UnsupportedClassVersionError;其启动包含类加载、验证、准备、执行四步;OOM错误需按具体区域(堆、元空间、线程栈等)精准定位根因。
-
Java8的java.time包是员工考勤系统日期逻辑的核心,应使用LocalDateTime、LocalTime、LocalDate分别处理打卡时刻、上下班时间与日期统计,配合可配置WorkRule、外置节假日管理及按日归组聚合实现准确考勤计算。
-
Collections.replaceAll方法用于在List中替换所有与旧值相等的元素为新值,基于equals()判断相等,需确保自定义对象正确重写equals()方法。