-
Java运算符结合性决定同优先级运算符的分组方式:左结合(如+、-、&&、|)从左到右,右结合(如=、?:、++)从右到左;结合性仅在优先级相同时生效,优先级不同则先按优先级分组。378 收藏 -
NoClassDefFoundError本质是UserService类在注解解析时被强制初始化失败,其静态块或字段初始化抛出未捕获异常(如ClassNotFoundException),导致JVM标记该类初始化失败,后续访问均抛此错误;根因需查ExceptionInInitializerError的cause。158 收藏 -
投票系统通过枚举定义候选人,Map记录票数,Set防止重复投票,支持投票、计票和结果查询功能。157 收藏 -
符号位提取需用算术右移(>>)将有符号整数最高位移至最低位,再与1按位与得0/1结果;可据此高效判断正负、计算绝对值、实现符号扩展等,但须注意语言差异、INT_MIN溢出及无符号类型不适用等问题。257 收藏 -
SpringBoot本身不提供原生的命令行远程调用机制,但可通过Actuator+HTTP端点、JMX、SpringIntegration或自定义WebSocket/REST接口等方式安全实现运行时方法触发。332 收藏 -
因为Java泛型存在类型擦除,ArrayList.class非法——JVM只认原始类型ArrayList,编译器无法生成带泛型参数的类字面量;运行时getClass()返回相同Class对象,泛型信息已丢失。358 收藏 -
值对象是不可变、无ID、基于属性相等性、自我验证的领域概念。需满足:final字段、重写equals/hashCode、无id、构造时校验;典型如Money;区别于Entity(有ID)、DTO(传输导向)、JavaBean(可变)。214 收藏 -
getClass()返回代理对象实际运行时类型(如$Proxy1),无法直接获取目标类;需通过Proxy.getInvocationHandler()获取处理器,再反射提取其内部目标对象getClass()才能得到原始业务类。248 收藏 -
Java封装的核心是通过接口隔离实现细节,而非仅设private字段;需在行为层校验状态、用模块系统强制隐藏实现、返回不可变对象或防御性拷贝,并持续权衡暴露边界。293 收藏 -
必须用HashSet而非TreeSet,因后者自动排序破坏随机性;红球应为random.nextInt(33)+1保证1–33,蓝球同理;循环需以set.size()==6为终止条件确保数量稳定。237 收藏 -
Metaspace泄露本质是类加载器未被回收导致元数据堆积;需通过JVM参数监控、jcmd/MAT定位异常类加载器,并修复ThreadLocal、静态缓存、监听器注册等常见泄露点。328 收藏 -
Collections.swap()仅用于安全交换List中两元素,不实现排序逻辑;冒泡排序用它交换相邻逆序元素,选择排序用它将极值换至目标位。268 收藏 -
@SneakyThrows不消除受检异常,而是通过字节码改写将其伪装为运行时异常抛出;实际仍抛原始异常对象,故可被对应catch捕获;推荐显式指定异常类型,避免误吞;适用于测试、Lambda等场景,禁用于Service层等破坏契约处。312 收藏 -
finalize()不是资源清理保险丝而是系统风险点,必须遵循主动、可控、可测、不可复活原则:需用AutoCloseable/try-with-resources或Cleaner替代;清理逻辑须与对象状态解耦;避免性能损耗;其已被Java9弃用、JDK18默认禁用。315 收藏 -
匿名内部类不支持显式构造方法,但可通过实例初始化块实现动态初始化,如配置监听器、捕获外部变量、处理异常及控制执行顺序。362 收藏