编写高质量代码:改善Java程序的151个建议(21~30)

建议二十一:用偶判断,不用奇判断

判断一个数是奇数还是偶数,应使用:i%2==0?“偶数”:“奇数”

不能使用i%2==1?“奇数”:“偶数”,java在做取余运算时,判断结果是否为1,不是即为偶数,判断负数时会出错。

建议二十二:用整数类型处理货币

计算机中浮点数有可能是不准确的,因为浮点数的存储规则决定。

通常做法是现将运算的值扩大100倍,运算结束后在缩小100倍。

建议二十三:不要让类型默默转换

java先进行运算再进行类型转换,当数值超过数值范围时,数值会变成负数。

建议二十四:边界

数字越界会使检验条件失效。数字越界后会变为负数。

建议二十五:不要让四舍五入亏了一方

根据不同场景,选择舍入的方法,不能简单地选择四舍五入。

建议二十六:提防包装类型的null值

包装对象与拆箱对象之间可以相互转换,但null值不能转换为基本类型,所以包装类型参与运算时要对null值进行检验。

建议二十七:谨慎包装类型的大小比较

包装类型的大小不能用“==”,“<”,“>”比较大小,只能用compareTo

建议二十八:优先使用整形池

public class Client {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int ii = scanner.nextInt();
            System.out.println("\n====" + ii + "  的相等判断====");
//            两个通过new产生的Integer对象
            Integer i = new Integer(ii);
            Integer j = new Integer(ii);
            System.out.println("new产生的对象:" + (i==j));

            i = ii;
            j = ii;
            System.out.println("基本类型转换的对象:" + (i==j));

            i = Integer.valueOf(ii);
            j = Integer.valueOf(ii);
            System.out.println("valueOf产生的对象:" + (i==j));
        }
    }
}

装箱动作是通过valueOf方法实现的,-128到127的数在包装成对象时是直接从IntegerCache中的静态数组cache整形池中获得,地址是相同的。

建议二十九:优先选择基本类型

参数优先考虑基本类型,自动装箱或拆箱时不知道执行地是哪个方法。

建议三十:不要随便设置随机种子

当种子相同时,同一台机器不论运行多少次,随机数是相同的。所以使用随机数时,不要设置种子。

猜你喜欢

转载自blog.csdn.net/qq_33283652/article/details/80063756