-
wait是Java中使线程释放锁并等待通知的方法,必须在synchronized中调用,支持无参、毫秒和纳秒超时三种形式,需配合while循环防止虚假唤醒,与sleep的核心区别在于是否释放锁。
-
在使用QueryDSL+JPA(EclipseLink)进行批量字段更新时,原生批量更新(单条SQL)比逐个merge实体快得多,但会绕过JPA生命周期监听器、验证逻辑和一级缓存同步,需根据业务场景谨慎选择。
-
ArrayBlockingQueue基于固定数组、有界且内存紧凑,LinkedBlockingQueue基于链表、可选有界、双锁并发吞吐高但GC压力大;选择依容量控制、吞吐需求及内存敏感度而定。
-
CompletableFuture异常不会自动抛出或中断链式调用,必须显式通过exceptionally、handle或whenComplete捕获,否则静默丢失;未处理异常仅在get/join时包装抛出,线上易致无日志无告警;allOf等组合方法不传播异常,需手动处理。
-
Arrays.stream是Java中将数组转为Stream的核心工具,支持基本类型和引用类型数组,可进行过滤、映射、归约等操作,并能通过toArray实现流与数组互转,还可指定范围处理子数组,提升代码简洁性与数据处理效率。
-
Java的Math类提供静态数学方法,涵盖绝对值、最值、幂运算、开方、取整、三角函数、随机数及PI/E常量,所有方法无需实例化且不可重写。
-
多态通过接口和继承实现插件式系统,定义Plugin接口规范行为,LogPlugin与EncryptPlugin分别实现具体功能,系统利用ServiceLoader动态加载并调用execute方法,结合工厂模式可按配置创建实例,新增插件无需修改主程序,实现松耦合与易扩展。
-
正确处理IOException需使用try-catch捕获异常,并优先采用try-with-resources自动关闭资源,确保程序健壮性与资源安全;传统try-finally方式适用于旧版本,但繁琐易错;多个资源按声明逆序关闭,异常抑制机制可保留关闭过程中的额外错误信息。
-
答案是开发简易图书搜索功能可通过Java类封装图书信息,用List存储数据并实现关键词模糊匹配搜索。首先设计Book类包含书名、作者、ISBN和年份等属性,并提供构造方法和getter方法;接着在主程序中创建List<Book>集合,手动添加测试数据;然后编写searchBooks方法,遍历集合判断书名、作者或ISBN是否包含忽略大小写的关键词,支持模糊匹配并返回结果列表;最后格式化输出搜索结果,若无结果则提示“未找到相关图书”。该实现结构清晰、易于扩展,后续可增加年份筛选、正则支持或结合数据
-
Java有8种基本数据类型:整数型(byte、short、int、long)、浮点型(float、double)、字符型(char)和布尔型(boolean),它们非对象、高性能,适用于高频计算与底层逻辑。
-
Java类型转换分隐式(自动提升)和显式(强制转换):小范围类型可安全自动转大范围,如byte→int;反之需强制转换并承担精度丢失或溢出风险;引用类型转换须有继承关系,字符串互转需方法调用,泛型因类型擦除无法真正强转。
-
非受检异常应以预防为主,通过参数校验、封装安全方法如safeGet、全局异常处理及断言机制减少异常风险,提升代码简洁性与可维护性。
-
Java项目启动异常需优先定位栈顶Causedby,再查依赖树、配置文件和环境兼容性。常见原因包括类路径冲突、配置占位符未定义、SpringBean初始化失败及JVM版本不匹配。
-
Java内部类主要用于增强封装性、实现逻辑内聚、简化回调与事件处理、模拟多重继承、支持延迟初始化及资源隔离;它通过作用域限制、隐式引用和访问权限控制提升代码清晰度与安全性。
-
类方法用static修饰,属于类本身,可直接通过类名调用,如Math.max();实例方法属于对象,需创建实例后调用。类方法不能访问实例成员,适用于工具、工厂等无状态场景;实例方法可操作对象状态,如Person的getName()。类方法不可直接调用实例方法,实例方法可直接调用类方法。判断依据是方法是否依赖对象状态:依赖则为实例方法,否则可设计为类方法。