-
Java带参数方法需显式声明类型和名称,如voidprintName(Stringname);多参数用逗号分隔;基本类型性能优,包装类支持null和泛型;可变参数String...须置末位;改private前须确认调用范围。
-
用String.join()最快最安全直接调用String.join()是最推荐的方式,它专为拼接设计,底层不创建多余对象,也不抛NullPointerException(空元素会触发异常,但空集合完全OK)。适合绝大多数场景,尤其是Set这类元素已知非null的情况。必须确保Set中不含null,否则运行时报NullPointerException如果Set是HashSet或LinkedHashSet,顺序不可靠;用TreeSet才有自然排序示例:St
-
String.join最快最直接但要求List及元素均非null;Collectors.joining更灵活可链式处理但有Stream开销;高频或大数据量时手写循环性能更优。
-
Java7+支持单个catch捕获多种互不继承的异常,用|分隔,共享最小公共父类变量;被抑制异常需通过getSuppressed()获取;Java6需用instanceof或多个catch块替代。
-
ConcurrentHashMap通过分段锁(1.7)或CAS+synchronized单节点锁(1.8+)实现细粒度并发控制,读操作无锁,写操作仅锁冲突桶;Hashtable则全局同步,读写互斥。
-
避免过度使用try-catch的核心是区分异常类型、分离控制流与错误处理逻辑;只捕获具体异常(如IOException、JsonProcessingException、SQLException子类),不用Exception/Throwable兜底;禁用异常替代条件判断,应使用nonNull、Optional、containsKey等明确表达意图。
-
HTTP/2多路复用需正确组合Http2FrameCodec与Http2MultiplexHandler:前者必须前置解析帧,后者依赖其触发stream创建;ALPN协商失败或配置错误会导致降级至HTTP/1.1;子channel生命周期绑定stream,非TCP连接级;h2c需通过Upgrade流程动态注入编解码器。
-
在Reactor响应式编程中,禁止在非阻塞线程(如reactor-http-nio)中调用block();应使用then()链式组合Mono,并通过map()或flatMap()实现后续异步操作与数据持久化。
-
Java线程执行顺序由操作系统调度器决定,JVM不干预;setPriority()基本无效;需用CountDownLatch等同步机制而非调度策略控制顺序。
-
最稳妥的方式是使用NumberFormat.getCurrencyInstance()并显式传入目标Locale(如Locale.CHINA),配合BigDecimal精确计算,避免double精度问题和Locale默认值陷阱。
-
单例模式在Java中有6种常见实现方式,各有适用场景。1.饿汉式:类加载时即创建实例,线程安全但不支持延迟加载,适合性能要求高、创建成本低的对象;2.懒汉式:首次调用时创建,需加锁保证线程安全,适合并发不高场景;3.双重检查锁定:仅首次创建时加锁,结合volatile关键字防止重排序,兼顾性能与安全,广泛采用;4.静态内部类:利用类加载机制实现线程安全延迟加载,推荐使用;5.枚举方式:语法简洁,天然防反射和反序列化破坏单例,适合不介意枚举写法的情况;6.容器或Spring框架管理:通过@Component
-
CyclicBarrier适合做迭代同步点,因其在每阶段强制线程汇合并执行单次汇总回调,天然适配多智能体决策、分布式训练等周期协同场景。
-
lockInterruptibly()仅在等待锁时响应中断,成功获取锁后不检查中断状态;必须配合try-catch处理InterruptedException,恢复中断标志并清理资源;需用isHeldByCurrentThread()判断是否持锁再unlock。
-
break仅用于终止当前最内层循环或switch,不能在if中单独使用;嵌套循环需用带标签break跳出多层;switch中缺break会导致case穿透,Java14+表达式式switch默认不穿透。
-
接口应由调用方定义并持有,实现方仅实现且不反向依赖;接口包路径属调用方,禁止暴露实现细节、框架注解及运行时反射注入,参数宜封装为DTO,粒度按业务变化原因聚合。