-
枚举中声明抽象方法并由各常量用{}块实现,是类型安全、编译强制检查的差异化策略;需配合私有字段复用共性数据,方法签名须稳定,适用于状态机等有限内聚场景。
-
Java内部类访问局部变量需为final或effectivelyfinal,根本原因是栈帧销毁后局部变量不复存在,而内部类对象存活于堆中;编译器通过值拷贝到隐式final字段来规避生命周期错位,final确保副本与原始值语义一致。
-
Java学生成绩排序需实现Comparable或提供Comparator;List用sort()或Collections.sort(),数组用Arrays.sort();并列名次需手动计算rank=i+1;大数据量优先就地排序。
-
String类是Java中处理文本的核心工具,具有不可变性。1.提供equals、equalsIgnoreCase进行字符串比较,startsWith、endsWith判断前后缀,contains检查子串,isEmpty和isBlank判断空或空白内容。2.charAt获取指定位置字符,indexOf和lastIndexOf查找子串位置,substring实现截取操作。3.replace和replaceAll支持字符或正则替换,trim、strip系列方法去除空白,format用于格式化输出。4.spli
-
多维数组是构建邻接矩阵最直接的工具,用n×n二维数组表示n个节点连接状态,需节点编号与索引对齐(0到n−1),区分图类型初始化,支持O(1)查边和O(n)度统计,但增删节点需重建矩阵。
-
使用Optional.ofNullable可清晰统一处理前端模糊查询参数的判空、去空格和转like模式逻辑,避免因空值导致全表扫描,提升代码可读性与可维护性。
-
读懂JDK8-XX:+PrintGCDetails日志的关键是抓住元空间变化、分代内存水位、GC事件类型与耗时三类核心信息,重点识别晋升异常、FullGC频繁、GC耗时突增、老年代持续上涨四类问题信号。
-
实现Runnable接口实现任务与执行者解耦:任务逻辑独立封装、可复用、易测试;Thread或线程池等执行者专注调度;支持灵活执行策略切换且不破坏继承体系。
-
答案:Java程序报“找不到主类”通常因类名不匹配、类路径错误或包结构问题导致。需确保文件名与公共类名一致且包含正确main方法;使用-cp指定类路径并包含当前目录;若类在包中,须按包结构存放文件并从根目录执行;注意IDE与命令行输出路径差异,确保class文件位置正确。
-
Math.log()返回自然对数(ln),非常用对数(log₁₀);需用Math.log(x)/Math.LN10或封装log10函数;Math.exp()是计算e^x的最优方式,比Math.pow(Math.E,x)更准更快;log与exp互为反函数但浮点下存在微小误差。
-
CompletableFuture更适合佣金计算场景,因其天然支持有依赖的异步链路(如关系查询→规则加载→金额聚合),具备组合、扇出、异常穿透和超时控制能力,而纯线程池易导致卡死、超时和资源泄漏。
-
必须用哑节点,因为删除头节点时需统一前驱;快指针先走n+1步,使慢指针停在倒数第n个节点前驱;循环条件为while(fast!=null),最后执行slow.next=slow.next.next并返回dummy.next。
-
isEmpty()更适合实时监控容量,因其时间复杂度低、无副作用、并发下更稳定,而size()在部分集合(如懒加载代理、ConcurrentHashMap.keySet())中可能触发计算、返回估算值或引发N+1查询。
-
Java对象关联靠字段引用实现,一对一用单个对象字段,一对多用集合字段,多对多双方均持集合或引入中间实体;getter/setter不建立关联,关键在字段是否真实赋值;依赖、聚合、组合仅语义不同,代码层面均为字段持有。
-
排查JAX-WS(尤其是CXF)泛型故障的关键是:泛型运行时擦除导致WSDL类型定义缺失或分片,需检查wsdl:import是否因targetNamespace不一致引发分片、统一接口与实现类的@WebServicetargetNamespace、避免裸泛型而改用包装类或数组,并通过SoapUI验证类型解析有效性。