-
Java字节码增强不能直接为已有对象添加属性,只能在类级别新增字段,使新创建对象拥有该字段;因对象内存布局由Class结构在加载时固定,运行时无法扩展单个对象内存块。
-
Files.lines()抛IOException是因为其Stream懒加载,异常在终端操作时才暴露;应优先用Files.readAllLines()立即报错;注意路径、BOM、空行分割、中文乱码及BufferedReader优于Scanner。
-
Arrays类提供静态方法高效处理数组,涵盖排序(sort)、查找(binarySearch)、填充(fill)、复制(copyOf)、比较(equals/deepEquals)及转字符串(toString/deepToString),并支持通过stream()集成StreamAPI,实现函数式编程,提升代码简洁性与性能。
-
日志中动态年龄判定失效源于岗位属性与法定身份映射失准,表现为身份突变无审批、多源冲突未告警、时间点错位三类痕迹,须通过参数化阈值、签名验证和快照固化实现可审计治理。
-
未正确配置JAVA_HOME环境变量是新手常见问题,导致Maven、Tomcat等工具无法运行,JAVA_HOME应指向JDK安装目录如C:\ProgramFiles\Java\jdk-17。
-
Java9模块系统(JPMS)不支持跨模块直接传递对象或运行时契约验证,module-info.java仅声明静态可见性契约;对象传递需通过ServiceLoader等运行时机制实现,契约验证需结合接口、注解与显式校验。
-
多态通过将行为分发交给子类实现,消除冗长的条件判断。定义统一接口(如Shape、PaymentStrategy),各具体类实现对应逻辑,调用方依赖抽象而非具体类型,新增功能无需修改原有代码,符合开闭原则。结合策略模式可解耦行为选择,工厂模式则进一步封装对象创建,使主流程仅依赖抽象,提升可维护性、扩展性和测试便利性,实现“可插拔”的设计。
-
类加载生命周期共七阶段:加载、验证、准备、解析、初始化、使用、卸载;其中前五阶段为核心,依次执行,加载阶段生成Class对象并存入Metaspace,验证确保字节码安全,准备为静态变量设默认值,解析将符号引用转为直接引用,初始化执行<clinit>方法赋实际值。
-
transient仅在Java原生序列化(ObjectOutputStream/ObjectInputStream)中生效,要求类实现Serializable且字段为非static、非final的实例变量;在JSON、日志、数据库、HTTP等场景中完全无效。
-
在banner.txt中嵌入动态变量需依赖MANIFEST.MF中的对应字段(如Implementation-Version),仅当使用spring-boot-maven-plugin正确配置archive时,${application.version}等占位符才生效;IDE直接运行主类不解析占位符;图片Banner不支持变量替换,动态内容须通过实现Banner接口或构建期生成实现。
-
Files.walkFileTree()配合SimpleFileVisitor是统计文件夹磁盘占用最稳妥的方式,支持符号链接处理、权限异常兜底及深度控制,核心重写visitFile累加大小,visitFileFailed忽略错误,preVisitDirectory可过滤目录或检测循环软链。
-
弱一致性迭代指迭代器创建后不阻塞、不加锁、不同步变更,可能漏读、重复或不反映新增/删除,但不抛ConcurrentModificationException,是JUC为兼顾性能与开销做的主动设计。
-
JVM通过双亲委派模型和沙箱机制彻底禁止覆写java.lang.String:启动类加载器强制加载官方版本,用户类无法编译或加载,非法加载的同名类与原String类型隔离;真正需防护的是应用层字符串使用安全。
-
super用于子类访问父类成员:①构造方法中必须首行调用super();②通过super.变量名访问被隐藏的父类变量;③通过super.方法名()调用被重写的父类方法;④不能在静态上下文中使用,也不是对象引用。
-
分层异常处理的核心是按职责隔离异常:表现层只暴露用户友好的提示,业务层用语义化异常表达规则(如InsufficientStockException),数据访问层将技术异常统一包装为DataAccessException。