-
Runnable描述“要做什么”,Thread负责“用什么去执行”;Runnable无start()方法,仅Thread可启动线程并回调其run();推荐优先使用Runnable以避免单继承限制、支持复用与线程池。
-
DelayQueue是Java中基于优先级队列实现的无界阻塞队列,用于存放Delayed对象,按延迟时间排序,仅当延迟到期后才能取出,适用于定时任务、缓存过期等场景。
-
抽象类用abstract修饰,不能实例化,用于定义通用结构和行为,子类必须实现其抽象方法;可含构造器、字段、普通方法等,适合“is-a”关系和共享代码场景。
-
商品类必须实现Comparable接口或提供Comparator,价格字段必须用BigDecimal,多条件排序用Comparator.comparing()链式调用,TreeSet去重需谨慎以防误删同价不同品商品。
-
使用@ControllerAdvice统一处理异常,通过自定义BusinessException区分业务与技术异常,结合@ExceptionHandler对不同异常返回对应状态码,并记录日志以提升排查效率。
-
Java的Base64类仅用于二进制与ASCII文本转换,非加密工具;禁用sun.misc.BASE64Encoder,须改用java.util.Base64并显式指定UTF-8字符集。
-
私有构造方法用于控制对象创建,防止外部直接实例化,确保通过静态方法获取实例,常用于单例模式和对象池技术,提升安全性与性能。
-
绝大多数业务场景下不该自定义CheckedException,应统一使用RuntimeException子类;仅IO等强契约场景才继承Exception;异常命名需体现具体失败场景,构造器须支持errorCode、message、cause全参数,并实现Serializable。
-
Java中通过String类的toLowerCase()和toUpperCase()方法实现字符串大小写转换,返回新字符串而不改变原串。示例:str.toLowerCase()转小写,str.toUpperCase()转大写。单个字符可用Character类的toLowerCase()和toUpperCase()方法。注意大小写转换受Locale影响,建议明确指定如Locale.ENGLISH以避免语言环境差异导致的问题。常用于统一用户输入、字符串比较前处理及格式化输出等场景。
-
JavaJIT通过回边与调用计数器识别热点循环,自动执行展开、向量化和范围检查消除;需避免反射、大循环体、异常等干扰,并用诊断参数验证优化效果。
-
Java接口的核心作用是定义行为契约,实现统一使用、自由替换与组合扩展;其不可替代性在于描述“能做什么”,支持多实现、无状态、高内聚,命名须为能力型形容词,方法应简单明确、避免实现细节,且需保障无感替换与向后兼容。
-
使用File类可基础遍历目录,通过listFiles()获取子项并判断类型输出;2.推荐使用NIO.2的Files.list()或Files.walk()结合Stream实现高效、安全的目录浏览,支持流式处理与异常管理。
-
JavaPattern/Matcher在处理含Unicode字符(如℃、Ω)的字符串时,若正则表达式未正确覆盖目标字符大小写或编码语义,会导致find()误判成功但group()返回空或null,且start()位置偏移——根本原因常是正则逻辑缺陷,而非Unicode编码问题。
-
removeIf方法通过传入Predicate实现条件删除,如删除偶数或年龄小于18的用户,需注意集合可变性、线程安全及原集合被修改的问题。
-
通过封装、多态和职责分离将业务逻辑与代码结构对齐,用领域对象替代贫血模型,以Order.pay()为例实现内聚校验,利用DiscountStrategy多态消除条件分支,拆分大Service为小聚合如UserRegistration,通过方法名validateEligibilityForPromotion等表达业务意图,使代码具备可读性与扩展性。