-
getter和setter是Java封装的核心机制,用于控制数据访问、保障逻辑一致性及支撑框架协作;通过它们可灵活变更存储方式、实现读写控制、动态计算、集中校验与副作用处理,并满足Spring、Jackson等框架的JavaBean规范要求。
-
封装要严,继承要慎。通过private字段和getter/setter保护数据安全,构造函数验证参数;优先组合而非继承,控制继承链深度;抽象类共享代码,接口定义行为契约;子类必须能透明替换父类,遵循里氏替换原则,确保设计健壮可维护。
-
环境变量丢失主因是配置未生效或上下文不一致。1.修改后未重启会话或刷新终端导致新设置无效;2.不同Shell或启动方式加载配置文件不同,图形界面IDE可能忽略.bashrc;3.IDE非终端启动时未继承系统变量,sudo命令默认不传递环境;4.JDK升级或重装后JAVA_HOME路径未同步更新;5.多用户、容器环境存在配置冲突,宿主机变量无法继承。关键是在修改后验证变量并统一管理路径。
-
Holder方式指静态内部类实现单例,因内部类名为Holder得名,利用JVM类加载机制保证线程安全与懒加载,实例在首次调用getInstance时初始化,无需同步关键字,兼具高效与简洁。
-
Math类提供静态数学方法,位于java.lang包。1.基本运算:Math.abs(-5)返回5;Math.max(3,7)返回7;Math.min(3,7)返回3;Math.round(4.6)返回5L。2.幂与开方:Math.pow(2,3)返回8.0;Math.sqrt(16)返回4.0;Math.cbrt(27)返回3.0。3.三角函数:参数为弧度,Math.toRadians(180)返回π;Math.toDegrees(Math.PI)返回180.0。4.常量与随机:Math.PI≈3.14
-
构造方法与初始化块用于对象初始化,执行顺序为:静态初始化块(类加载时一次)→普通初始化块(每次创建对象)→构造方法。
-
使用自定义异常可明确表达业务错误,如“订单已过期”,通过继承RuntimeException并添加错误码,在支付场景中抛出OrderException,结合@ControllerAdvice统一返回结构化错误信息,提升系统可维护性和前后端协作效率。
-
Arrays.asList返回固定大小的List,不支持增删操作,修改原数组会影响List,基本类型数组需用包装类,适合初始化和临时使用。
-
Java项目中文乱码的根本原因是编码配置不统一,需确保源文件、编译器、JVM、IDE、终端五者编码均为UTF-8:1.IDEA中设置Global/Project/Properties编码为UTF-8并勾选转义;2.Maven配置maven-compiler-plugin的encoding为UTF-8;3.JVM启动时加-Dfile.encoding=UTF-8;4.终端需设为UTF-8(如Windows执行chcp65001)。
-
Java下载文件没反应,通常因请求未发出、响应未接收或前端未触发下载;需确认后端是否返回文件流(如ResponseEntity<byte[]>)并设置正确响应头(Content-Type、Content-Disposition),前端调用须配置responseType:'blob',且排除跨域拦截与流写入异常。
-
订单管理系统应使用枚举定义状态及流转规则,用EnumMap按状态分组管理订单,并将状态变更逻辑封装进Order类,确保状态安全、集合高效、业务内聚。
-
Exception和Error本质不同:Exception是程序可预判、可干预的异常,分检查型(如IOException)和非检查型(如NullPointerException);Error是JVM严重故障(如OutOfMemoryError),不可恢复,不应捕获处理。
-
模板方法模式通过抽象类定义算法骨架,将具体步骤延迟到子类实现。1.抽象类DataProcessor定义final的process()方法,固定执行流程:readData()、validateData()、transformData()、saveData()。2.readData()和saveData()为抽象方法,必须由子类实现;validateData()和transformData()为钩子方法,可选覆盖。3.CSVDataProcessor和JSONDataProcessor继承DataProces
-
并行流是Java8StreamAPI基于Fork/Join框架实现的并行处理机制,通过parallelStream()将任务拆分多线程执行,适用于大数据量、计算密集型且无共享状态的场景,能有效提升多核CPU利用率,但需避免用于IO操作、注意线程安全与数据结构选择,并可自定义线程池以优化性能。
-
Java实例化是用类创建具体对象的过程,通过new关键字在堆内存中分配空间、初始化变量、执行构造代码块和构造方法并返回引用;声明变量(如Students;)不等于实例化,s此时为null;此外还可通过反射、工厂方法、clone()或反序列化实现;每次实例化都生成独立对象,静态成员除外。