-
必须用Files.list()配try-with-resources读取文件列表,过滤前校验Files.isReadable();删除前检查isRegularFile()/isDirectory()及目录是否为空;复制大文件需流式缓冲并支持进度;Swing中改用定时轮询+Files.walk()差分监听变更。
-
NullPointerException总在运行时才报,因为Java仅在调用null引用的方法、访问其字段或数组长度时抛出,编译器不检查空值,JVM也不提前拦截。
-
Wrapper类用于将基本类型包装为对象,以支持集合、泛型、null值及工具方法;每种基本类型对应首字母大写的包装类;Java5起支持自动装箱/拆箱,但需注意缓存范围(-128~127)和equals比较。
-
LinkedList适用于频繁头尾增删、需双端队列操作且无法预估容量的场景,但内存开销大、缓存不友好,多数情况下ArrayDeque或ArrayList更优。
-
登录注册功能需先定义完备的User数据模型,密码必须哈希加盐存储,ID用Long或UUID,username和email设唯一索引,注册登录均用POST防重复提交,服务端做幂等控制,Session交由框架管理,DB操作用PreparedStatement+事务。
-
MalformedParameterizedTypeException是JVM运行时因泛型类型“语法合法但语义残缺”(如TypeVariable未解析)而抛出的异常,多发于反射获取泛型后调用toString()等操作,需通过类型检查和安全API(如Type.getTypeName)规避。
-
LocalDate仅含年月日,LocalDateTime含年月日及时分秒,二者均无时区、不可变、线程安全;用途不同:生日等纯日期用LocalDate,订单时间等需精确到秒用LocalDateTime。
-
ConcurrentHashMap是高并发读写场景的默认首选,分段锁或CAS+synchronized实现高吞吐,读无锁、写低冲突;误用get()+put()会导致更新丢失,应使用computeIfAbsent()等原子方法。
-
Path和Files比File更适合现代Java文件操作,因Path专注路径语义(标准化、解析、跨平台),Files提供原子、可中断、异常明确的I/O操作,共同解决File路径耦合、异常模糊、跨平台缺陷等问题。
-
TreeMap适合需键自动排序的场景,基于红黑树实现O(logn)操作,支持floorKey/ceilingKey范围查询(需判null)、subMap子视图及自定义Comparator;不支持并发写入,高并发应选ConcurrentSkipListMap。
-
LinkedBlockingQueue适合高吞吐、低竞争的生产者-消费者场景,采用双锁分离机制提升读写并发性能,但存在OOM风险、GC压力大等问题,需谨慎配置容量并避免阻塞误用。
-
Java商品价格计算系统必须用BigDecimal字符串构造、显式精度控制、策略模式解耦折扣、动态税率配置及价税分离。
-
getDeclaredField()是获取私有字段的唯一方法,需配合setAccessible(true)绕过访问检查,且要注意类型匹配、static/instance区分、final限制、性能损耗及模块化兼容性问题。
-
static用于将成员与类绑定而非对象,实现类级别共享、免实例调用和一次性初始化;支持静态变量、方法、代码块和内部类,适用于计数、工具函数、配置加载及轻量辅助结构。
-
运行时常量池是JVM方法区(JDK8+为元空间)中动态管理类字面量和符号引用的核心结构,支撑动态链接与跨类引用解析;其核心作用非单纯存储常量,而是实现符号引用到直接引用的解析、字符串驻留共享及反射等动态特性。