-
org和com是Java包命名中沿用互联网域名语义的非强制前缀:com对应商业组织,如com.google.gson;org对应非营利组织,如org.junit.jupiter;选择依据是项目归属与维护主体性质而非法律注册状态。
-
应继承Exception当调用方必须显式处理(如重试、降级),继承RuntimeException当属代码缺陷或不可控故障且无法合理处理;前者为受检异常,后者为非受检异常。
-
遍历ArrayList时调用remove()抛ConcurrentModificationException,因迭代器为fail-fast机制:modCount校验失败;正确做法是用Iterator.remove()或removeIf(),而非集合自身remove()。
-
本文介绍如何在Java中根据数值大小自动调整小数位数,确保任意正浮点数(如123.4、0.001)均以恰好6位有效数字(非固定小数位)的形式输出,兼顾可读性与精度要求。
-
CharBuffer是字符数据容器,负责内存操作;Charset是编解码规则定义者。二者分工明确、配合使用:CharBuffer管理UTF-16字符序列,依赖position/limit/capacity控制读写;Charset负责byte与char间转换,不可变且线程安全。
-
MyBatis事务不生效的主因是@Transactional未作用于public方法,因SpringAOP代理仅拦截public方法;还需检查@MapperScan配置、避免同类直接调用、合理选用传播行为如REQUIRED或REQUIRES_NEW。
-
九九乘法表应为下三角格式共45项;外层循环控制行数(1–9),内层循环上限为i而非9,每次拼接i+"×"+j+"="+i*j。
-
在SeleniumJava中调用fullscreen()后页面加载会导致窗口自动退出全屏;为确保全屏/最大化状态持久生效,应优先使用maximize()或结合屏幕尺寸手动设置setSize(),而非依赖fullscreen()。
-
Future是代表尚未完成但将来可能完成的异步计算结果的占位符,核心功能为获取结果(get())、查询状态(isDone/isCancelled)和控制执行(cancel);它无回调、不支持链式组合,新项目推荐使用CompletableFuture。
-
SpringBoot3.0+需用Freemarker2.4.0+以兼容JakartaEE,配置需指定模板路径、编码和共享变量,Java对象访问须遵循BeanWrapper规则,路径问题优先检查classpath加载策略。
-
String.equals()不能用==判断,因==比较内存地址而非内容;登录校验须用.equals()并判空,推荐"expected".equals(input);密码哈希比较需防时序攻击,应使用MessageDigest.isEqual()或PasswordEncoder.matches()。
-
Java集合要求使用包装类,根本原因是集合只能存储对象,而基本类型不是对象;泛型通过类型擦除强化了必须使用引用类型的约束;自动装箱/拆箱简化了使用,但存在空指针、性能和比较陷阱;高性能场景可选用原始类型集合库。
-
Java线程池默认不支持负载均衡,任务分发由execute()逻辑决定而非队列;真正有效的负载感知需侵入任务获取环节(如重写poll/take)或利用RejectedExecutionHandler配合自定义调度器,但实现复杂且易出错;推荐优先使用ForkJoinPool依赖工作窃取机制自动平衡。
-
最可靠方式是用newThrowable().getStackTrace()解析栈帧,通过循环比对类名跳过工具类,避免硬编码索引;SecurityManager已废弃,JDK17+不可用。
-
RecordPatterns是Java21正式引入的模式匹配特性,扩展instanceof和switch对record字段的直接解构能力,编译期类型检查,无需getter且无反射开销。