1/37
根据《Java 开发手册》部分内容整理的填空式抽认卡,共 38 张,覆盖基本数据类型、BigDecimal 使用、POJO 规范、日期时间、集合处理、并发控制、控制语句等核心强制/推荐规则。
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
【强制】任何货币金额必须以最小货币单位且类型来存储。
整型(int/long)
【强制】浮点数等值判断不能使用“==”或 equals,应通过设定或使用 BigDecimal。
误差范围
【强制】使用 BigDecimal 比较相等时,应调用 __ 方法,而非 equals()。
compareTo()
【强制】禁止使用 构造方法把 double 转成 BigDecimal,以免精度丢失。
BigDecimal(double)
【强制】POJO 类属性必须使用 数据类型,而非基本类型。
包装
【强制】数据库 bigint 字段对应 Java 属性应使用 类型。
Long
【强制】定义 DO/DTO/VO 时,属性不要设置 _ 值。
默认
【强制】序列化类新增属性时,不要修改 _ 字段,否则可能反序列失败。
serialVersionUID
【强制】构造方法内部禁止加入 逻辑,如需初始化请放入 init 方法。
业务
【强制】POJO 类必须编写 _ 方法,便于异常时打印属性值。
toString()
【强制】同一属性不能同时存在 isXxx() 和 () 方法,避免框架取值冲突。
getXxx
【推荐】使用 String 的 split 结果数组时,要检查最后一个分隔符后是否有内容,否则可能抛出 ___。
IndexOutOfBoundsException
【推荐】循环体内拼接字符串应使用 __ 的 append()。
StringBuilder
【推荐】需要保证变量不可重新赋值时,可使用 关键字。
final
【强制】日期格式化时,年份必须使用小写 。
y
【强制】日期格式中,大写 M 表示, 小写 m 表示; 大写 H 表示24小时制, 小写 h 表示12小时制。
月份, 分钟
【强制】获取当前毫秒数应调用 __ 方法,而非 new Date().getTime()。
System.currentTimeMillis()
【强制】程序中禁止使用 java.sql.Date、java.sql.Time 及 __ 类。
java.sql.Timestamp
【强制】不要在代码中写死一年等于 天,需动态获取年份天数。
365
【强制】覆写 equals 时必须同时覆写 __。
hashCode()
【强制】判断集合是否为空应使用 _(),而不是 size()==0。
isEmpty
【强制】Collectors.toMap 转换时必须提供 __ 参数,以处理 key 冲突。
mergeFunction (BinaryOperator)
【强制】ArrayList 的 subList 结果不能强转成 _,否则会 ClassCastException。
ArrayList
【强制】对 Map 的 keySet()/values()/entrySet() 返回集合不能执行 操作,否则抛异常。
添加元素
【强制】Collections.emptyList()、singletonList() 返回的集合是 __,禁止增删元素。
不可变(immutable)
【强制】集合转数组时应调用 toArray( new T[0] ),若使用无参 toArray 后强转会抛 __。
ClassCastException
【强制】foreach 循环中不要直接 remove 元素,需使用 _ 的 remove()。
Iterator
【强制】自定义 Comparator 必须满足对称、传递、比较相等一致三条规则,否则 _ 会抛异常。
Arrays.sort / Collections.sort
【推荐】初始化 HashMap 时,如无法确定大小可先设置容量为 (默认值)。
16
【推荐】遍历 Map 时应优先使用 方式,效率高于 keySet。
entrySet
【强制】线程池应通过 __ 构造,而非 Executors 工厂方法。
ThreadPoolExecutor
【强制】SimpleDateFormat 是线程不安全的,若定义为 static 必须配合 或 ThreadLocal。
锁同步
【强制】自定义 ThreadLocal 变量用完后必须调用 _ 进行回收。
remove()
【强制】对多个资源加锁时须保持一致的 顺序,避免死锁。
加锁
【强制】finally 块必须关闭资源,即使发生异常也需 。
try-catch
【强制】在 switch 语句块中必须包含 _ 分支并放在最后。
default
【强制】if/for/while 等语句体必须使用 包裹,即使只有一行代码。
大括号
【推荐】表达异常分支时,可使用“卫语句”提前 return,而少用多层 结构。
if-else