-
可以,Java中构造方法支持重载,判断依据仅为参数列表(类型、数量、顺序)不同;修饰符、访问权限等差异不构成重载;this()调用必须为首行且唯一;默认无参构造在自定义构造后消失。
-
Drools决策表在复杂业务规则管理中的核心价值体现在三个方面:1.提升可视化与可读性,通过结构化表格形式让业务人员无需编码即可理解并参与规则维护;2.实现业务逻辑与代码解耦,使规则变更仅需修改Excel文件而无需重新编译部署代码,提升响应效率;3.降低维护成本和出错率,通过规范化规则定义减少人为错误,并支持版本控制和审计,增强合规性。
-
Java反射调用方法的核心是通过Class获取Method对象后调用invoke(),需注意:1.用getMethod()查public方法(含父类),getDeclaredMethod()查本类所有方法(含private);2.参数类型必须精确匹配;3.private方法需setAccessible(true);4.invoke()第一个参数为对象实例(静态方法传null),异常被包装为InvocationTargetException。
-
静态代码块在类加载时执行且仅一次,用于初始化静态资源;构造代码块在每次创建对象时执行,用于共用实例初始化逻辑。执行顺序为:静态代码块→构造代码块→构造方法。如示例所示,首次new时输出1.2.3,后续仅输出2.3。
-
Arrays.asList()返回固定大小列表,不支持增删;基本类型数组需用包装类;修改引用类型元素会影响原数组;Arrays.sort()按类型选择算法;equals()不适用于多维数组,应使用deepEquals()。
-
Java头像上传应存文件系统或对象存储而非数据库BLOB,需校验大小类型、重命名防攻击、禁执行权限;本地用Nginx映射静态路径,生产推荐OSS并存key与URL,数据库仅存元信息,删除时同步清理文件。
-
Java的Matcher.replaceAll()不支持Perl风格的\U(全大写)或\L(全小写)转义序列,无法通过纯替换字符串实现大小写转换;必须结合String.toUpperCase()或自定义Function<MatchResult,String>进行逻辑处理。
-
i++不是原子操作,因其被拆分为读取、计算、写回三步,多线程下易发生竞态导致结果错误;volatile仅保可见性不保原子性;synchronized、AtomicInteger、ThreadLocal等是常用线程安全方案。
-
Java中没有\_JavaMethodReference类,它是非标准的误传概念;方法引用是JDK8+语法特性,编译后生成函数式接口实例,运行时无法直接反射获取原始Method对象。
-
类是模板,对象是用new创建的具体实例;类不占内存、不能执行方法,仅描述结构,真正存储数据和执行行为的是对象,每个对象拥有独立字段值,静态成员除外。
-
线程中异常无法被直接捕获,需通过UncaughtExceptionHandler、全局处理器、Callable与Future或自定义线程工厂处理,确保异常不被忽略。
-
HashSet判断重复需同时满足hashCode()相同且equals()返回true;仅用hashCode()会因哈希冲突导致误判;自定义类须重写二者,否则默认基于内存地址比较;底层基于HashMap实现,故支持null、不安全,且去重逻辑等同key去重。
-
抽象类的核心作用是定义模板、约束行为、复用代码、防止误用;它提供统一结构,强制子类实现抽象方法,支持继承具体实现,并体现“概念而非实例”的设计思想。
-
Java内存模型(JMM)确保多线程环境下的可见性、有序性和原子性,通过volatile、synchronized等机制保障线程间变量的正确交互;GC机制则自动管理内存,采用标记-清除、复制、整理等算法及分代收集策略回收无用对象,提升内存利用率。1.JMM通过Happens-Before原则定义操作顺序,确保共享变量的可见性,避免缓存不一致和指令重排带来的并发问题;2.GC机制根据应用对吞吐量或延迟的需求选择合适收集器,如Parallel追求高吞吐,CMS、G1、ZGC等适用于低延迟场景;3.排查OOM需
-
成员变量定义在类内方法外,局部变量定义在方法、构造器或代码块内;前者有默认值、存于堆/方法区,后者须显式初始化、存于栈帧且作用域受限。