-
银行账户应封装为责任明确的实体,余额字段须private,仅通过deposit()和withdraw()校验后修改,构造方法拒绝负初始余额。386 收藏 -
接口是公开、抽象、可组合的行为契约,表达“能力”而非“身份”,支持多实现与向后兼容演进;abstractclass表达纵向类型继承,仅单继承。304 收藏 -
Comparable接口为类定义唯一默认排序规则,实现后对象可直接用于TreeSet、TreeMap及Arrays.sort()等;重写compareTo需规避溢出、空指针和equals不一致三坑,多字段排序应链式短路判断,且Comparable与Comparator分工明确、可共存。311 收藏 -
StackWalker是Java9引入的轻量级堆栈快照工具,专为降低GC压力、避免StackTraceElement大量分配而设计,不替代getStackTrace(),而是适用于高频日志、AOP、监控等场景。233 收藏 -
空捕获会吞掉异常所有线索,导致静默失败;finally中return会覆盖异常;包装checkedexception需保留语义;日志必须用结构化模板+异常对象,禁用printStackTrace。497 收藏 -
Java中常见的关系运算符有6个:==、!=、>、<、>=、<=;它们返回boolean值,用于条件判断,需注意基本类型比较值、引用类型比较地址,字符串内容比较应使用equals()。216 收藏 -
Optional.stream()返回0或1元素的Stream,用于安全接入流式处理链;它仅适用于非nullOptional,而Stream.ofNullable()可直接处理任意引用类型包括null。123 收藏 -
ForkJoinPool专为可递归拆分的CPU密集型计算任务设计,采用双端队列与工作窃取机制实现动态负载均衡;ThreadPoolExecutor是通用线程池,适用于任意独立任务,依赖共享队列静态调度。246 收藏 -
Java不支持类的多重继承,仅允许单继承以避免菱形继承等问题,但通过接口(含default方法)、组合、委托、内部类及抽象类与接口组合等机制实现多源行为复用与灵活建模。220 收藏 -
不安全——因空值禁止、重复键报错、大小受限;List.of支持0–~255元素,Map.of限10键值对且须偶数参数,超限需用ofEntries或toList()等替代方案。242 收藏 -
Arrays.binarySearch返回负值时插入点计算为-(result+1),因需区分查找成功(非负索引)与失败(负值编码),并唯一确定插入位置;插入点即首个≥目标元素的索引,若全小于目标则为数组长度。468 收藏 -
使用连接池确保线程独占连接,事务绑定单线程执行,DAO设计无状态,配合合理隔离级别与超时控制,可保障多线程下数据库操作安全高效。300 收藏 -
System.currentTimeMillis()返回自1970-01-0100:00:00UTC起的毫秒数,是无时区信息的Unix时间戳,非日历时间;它轻量高效但易因时区、分布式时钟漂移引发错误。470 收藏 -
Callable和Runnable的核心区别在于:Callable的call()方法有返回值且可抛异常,Runnable的run()方法无返回值且不能抛受检异常;前者适用于需获取结果的场景,后者适用于无需返回的场景。236 收藏 -
推荐组合方案:时间戳+机器标识+序列号,如202405201530220010001;其次Snowflake(64位整数编码)及数据库辅助方案(seq_generator表+缓存);需避坑伪随机、时间回拨、字符混淆等问题。427 收藏