基本类型。

  • 用偶判断,不用奇判断
        判断是否是偶数,代码如下:i % 2 == 0 ? "偶数" : "奇数"
  • 用整数类型处理货币

        在计算机中浮点数有可能(注意是有可能)是不准确的,他只能无限接近准确值,而不能完全精确,这是由浮点数的存储规则所决定的。

        解决精度问题有两种方法:

            1、使用BigDecimal

            2、使用整型

  • 不要让类型默默转换

        在实际开发中,更通用的做法是主动声明式类型转化(注意不是强制类型转换)。

        注意:基本类型转换时,使用主动生命方式减少不必要的Bug。

  • 边界,边界,还是边界

        数字越界使校验条件失败。

        边界测试。

  • 不要让四舍五入亏了一方

        目前Java支持以下七种舍入方式:(BigDecimal和RoundingMode)

        ROUND_UP:远离零方向舍入。

        ROUND_DOWN:趋向零方向舍入。

        ROUND_CEILING:向正无穷方向舍入。

        ROUND_FLOOR:向负无穷方向导入。

        HALF_UP:最近数字舍入(5进)。

        HALF_DOWN:最近数字舍入(5舍)。

        HALF_EVENT:银行家算法。

        注意:根据不同的场景,慎重选择不同的舍入模式,以提高项目的精确度,减少算法损失。

  • 提防包装类型的null值
        包装类型参与运算时,要做null值校验。
  • 谨慎保证类型的大小比较

        在Java中“==”是用来判断两个操作数是否有相等关系的,如果是基本类型则判断值是否相等,如果是对象则判断是否是一个对象的两个引用,也就是地址是否相等,这里很明显是两个对象,两个地址,不可能相等。

        在Java中,“>”和“<”用来判断两个数字类型的大小关系,注意只能是数字型的判断,对于Integer包装类型,是根据其intValue()方法的返回值(也就是其相应的基本类型)进行比较的(其他包装类型是根据相应的value值来比较的,如doubleValue、floatValue等)。

  • 优先使用整型池

        整形池的存在不仅仅提高了系统性能,同时也节约了内存空间,这也是我们使用整型池的原因,也就是在声明包装对象的时候使用valueOf生成,而不是通过构造函数来生成的原因。在判断对象是否相等的时候,最好是用equals方法,避免用“==”产生非预期结果。

        注意:通过包装类的valueOf生成包装实例可以显著提高空间和时间性能。

  • 优先选择基本类型

        基本类型和包装类型有自动装箱、自动拆箱的功能,但并不影响他们的重载,自动拆箱(装箱)只有在赋值时才会发生,和重载没有关系。

        自动装箱有一个重要的原则:基本类型可以先价款,再转变成宽类型的包装类型,但不能直接转变成宽型的包装类型。简单的说就是,int可以加宽转变成long,然后再转变成Long对象,但不能直接转变成包装类型,注意这里指的都是自动转换,不是通过构造函数生成。

        注意:重申,基本类型优先考虑。

  • 不要随便设置随机种子

        在Java中,随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:

            1、种子不同,产生不同的随机数。

            2、种子相同,即使实例不同也产生相同的随机数。

    Random类的默认种子(无参构造)是System.nanoTime()的返回值(JDK1.5版本以前默认种子是System.currentTimeMillis()的返回值),注意这个值是距离某一个固定时间点的纳秒数,不同的操作系统和硬件有不同的固定时间点,也就是说不同的操作系统其纳秒值是不同的,而同一个操作系统纳秒值也会不同,随机数自然也就不同了。(顺便说下,System.nanoTime不能用于计算日期,那是因为“固定”的时间点是不确定的,纳秒值甚至可能是负值,这点与System.currentTimeMillis不同)

        通过java.util.Random类获得随机数的原理和Math.random方法相同,Math.randon()方法也是通过生成一个Random类的实例,然后委托nextDouble()方法的,两者是殊途同归,没有差别。

        注意:若非必要,不要设置随机数种子。

猜你喜欢

转载自blog.csdn.net/en_joker/article/details/80450771