【强制】注意 Math.random() 这个方法返回是double类型,注意取值的范围 0≤x<1(能够取到零值,注意除零异常),如果想获取整数类型的随机数,不要将x放大10的若干倍然后取整,直接使用Random对象的nextInt或者nextLong方法。
工具类中屏蔽构造函数
工具类是一堆静态字段和函数的集合,其不应该被实例化;但是,Java 为每个没有明确定义构造函数的类添加了一个隐式公有构造函数,为了避免不必要的实例化,应该显式定义私有构造函数来屏蔽这个隐式公有构造函数。避免使用BigDecimal(double)
BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。1
2
3
4
5
6
7//反例:
// BigDecimal 反例
BigDecimal bigDecimal = new BigDecimal(0.11D);
//正例:
// BigDecimal 正例
BigDecimal bigDecimal1 = bigDecimal.valueOf(0.11D);
返回空数组和集合而非 null
若程序运行返回null,需要调用方强制检测null,否则就会抛出空指针异常;返回空数组或空集合,有效地避免了调用方因为未检测null 而抛出空指针异常的情况,还可以删除调用方检测null 的语句使代码更简洁。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18//反例:
//返回null 反例
public static Result[] getResults() {
return null;
}
public static Map<String, Result> getResultMap() {
return null;
}
//正例:
//返回空数组和空集正例
public static Result[] getResults() {
return new Result[0];
}
public static Map<String, Result> getResultMap() {
return Collections.emptyMap();
}
*【强制】在一个switch块内,每个case要么通过break/return等来终止,要么注释说明程序将继续执行到哪一个case为止;在一个switch块内,都必须包含一个default语句并且放在最后,即使空代码。