-
Java字符串字面量在编译期确定并存于字符串常量池(JDK7+在堆中),自动入池;newString()在堆新建对象,不入池;intern()可手动入池并返回池中引用;编译期常量拼接入池,运行期拼接不入池。199 收藏 -
异常链通过将底层异常作为原因嵌入新异常,实现错误信息的封装与追溯。在Java中,使用Throwable类提供的带cause参数的构造函数或initCause()方法,可在抛出业务异常时保留原始异常。例如,在Service层捕获SQLException后,可封装为UserServiceException并传入原异常,形成链条。打印堆栈时会自动显示“Causedby”层级结构,便于定位根因。自定义异常应提供publicMyException(Stringmessage,Throwablecause)构造函数并123 收藏 -
IllegalArgumentException由方法作者负责抛出,用于拒绝逻辑非法的输入参数;需在方法开头校验并给出含参数名、实际值和业务范围的清晰错误信息,构造函数中尤其不可遗漏。287 收藏 -
成员变量有默认值,基本类型为0、false或'\u0000',引用类型为null;局部变量无默认值,必须显式初始化。283 收藏 -
当将@ExceptionHandler从控制器内移至@RestControllerAdvice类后响应格式异常,通常因多个全局异常处理器冲突导致优先级不足,需显式设置@Order保证执行顺序。262 收藏 -
Java中MessageDigest生成SHA-256哈希结果长度不对,因digest()返回字节数组而非十六进制字符串,需用String.format或Hex.encodeHexString转换并补零至64位;实例不可复用,须reset()后才能再次update;字符串输入必须指定UTF_8编码。167 收藏 -
用XSSF-SAX流式解析替代XSSFWorkbook,内存稳定几MB、速度提升3~5倍;关闭公式计算、跳过隐藏表、只读打开;解析后批量入库,1000~5000行flush一次。155 收藏 -
MinorGC发生在年轻代,触发快、停顿短但频率高,由Eden区满触发,存活对象复制到Survivor区或晋升老年代;MajorGC非标准术语,实为老年代回收;FullGC是全局STW事件,扫描整个堆与元空间。357 收藏 -
Java数组只有length字段,无length()方法;多维数组的length仅表示第一维大小;合法索引范围为0到arr.length-1。383 收藏 -
本文介绍如何使用JavaStreamAPI从对象列表中提取某一字段(如名称),并将其转换为无重复的Set<String>,重点讲解map()的正确用法、类型安全实践及常见陷阱。222 收藏 -
Java中Scanner读取数据需注意缓冲区残留和类型匹配:nextInt()等不消费换行符,后续nextLine()会返回空串;应在数值读取后加scanner.nextLine()清空缓冲区,或统一用nextLine()配合parseXxx()转换;hasNextXxx()用于循环读取;Scanner关联System.in时无需close()。178 收藏 -
吞吐量优先应选ParallelGC,因其专为最大化吞吐量设计,全程STW但效率高、无协调开销;G1GC仅在兼顾吞吐与软实时停顿(≤200ms)时才适用。247 收藏 -
会出事,JVM明确禁止“this引用逸出”,对象未初始化完就暴露引用会导致读取未初始化字段、NPE或逻辑错乱。302 收藏 -
必须是第一条语句,因为JVM要求对象在执行任何字段赋值、变量声明或方法调用前,必须由某个构造器完成初始状态设定,否则可能访问未初始化字段或破坏构造顺序。488 收藏 -
catch(Exceptione)危险因吞掉空指针等代码缺陷异常,掩盖bug致线上难定位;应捕获具体类型或用catch(Throwablet)打全量日志后重抛。207 收藏