-
JavaMap接口核心解决通过唯一键快速定位值的问题,依赖equals()和hashCode()契约,需按场景选用HashMap、TreeMap或ConcurrentHashMap等实现类。
-
Condition是Lock配套的条件等待接口,支持多条件分组唤醒;而synchronized仅有一个隐式等待队列。它需通过lock.newCondition()获取,await()/signal()必须在lock()/unlock()内调用,且须用while循环检查条件以防虚假唤醒。
-
JDK动态代理通过接口+反射+InvocationHandler统一实现权限校验与事务管理,要求目标类必须实现接口;invoke方法中按序执行权限检查、事务开启、业务调用、提交/回滚;支持注解驱动的条件增强。
-
String.intern()不适合作为锁对象,因其锁范围失控、内存泄漏风险高、性能不可靠且语义错位;推荐用ConcurrentHashMap+synchronized、StampedLock或幂等设计替代。
-
MessageFormat.format()的核心价值是用标准化占位符替代字符串拼接,需严格使用{0}等数字索引、成对单引号转义、预编译实例、参数数量匹配。
-
局部变量是定义在方法、构造器或代码块内的变量,作用域限于声明处到对应右大括号,不可用static等修饰,无默认值须显式初始化,每次调用重新创建并自动销毁。
-
CountDownLatch初始化时count值错误会导致await永久阻塞;必须确保count等于实际countDown调用次数,避免遗漏异常路径或线程池中调用时机错位,且不可重用。
-
关键在选对方法、控住精度、适配场景:金融用DecimalFormat("¤#,##0.00"),统计用"#,##0",Excel需设单元格数字格式,前端优先toLocaleString("en-US");须先安全转换再格式化,显式控制小数位、符号位置与负号规范,注意Locale、性能及前后端职责分离。
-
ArrayList适合随机访问但插入删除慢,底层为动态数组,get/set为O(1),add/remove中间位置需整体拷贝;LinkedList适合头尾增删但随机访问为O(n);Vector和Stack已过时;CopyOnWriteArrayList适用于读多写少场景,ArrayDeque性能优于LinkedList。
-
IllegalStateException比IllegalArgumentException更合适,因为前者精准表达“对象当前状态不支持该操作”,如Scanner未调用hasNext()就调用next();后者易误导调用者检查参数而非对象生命周期。
-
JavaFormatter类借鉴C语言printf语法,支持宽度、对齐、精度等控制;格式为%indexwidthconversion;flags中-为左对齐、0为数字前导零、空格为正数前加空格、+为强制显符号;Java原生不支持^居中对齐。
-
答案:Deque是Java中支持两端操作的线性集合,ArrayDeque为其高效实现,适用于栈、队列及双端队列场景。
-
Java8中用Stream和Lambda实现笛卡尔积的核心是flatMap+map嵌套:外层流遍历第一个集合,对每个元素用flatMap拉平第二个集合的映射结果,并在map中构造数组、List或DTO;支持任意类型、多集合及自定义对象,需注意空集合、基本类型流转换和内存溢出风险。
-
Java对象关联靠字段引用实现,一对一用单个对象字段,一对多用集合字段,多对多双方均持集合或引入中间实体;getter/setter不建立关联,关键在字段是否真实赋值;依赖、聚合、组合仅语义不同,代码层面均为字段持有。
-
Object类是Java所有类的根父类,核心意义在于统一类型体系、提供基础行为契约、支撑运行时机制:实现“一切皆对象”、定义toString()等关键方法协议、支撑JVM异常处理与泛型擦除等底层功能。