阿里Java开发手册阅读笔记4
作者:互联网
1. 禁止使用构造方法BigDecimal(double)的方式把double的值转化为BigDecimal对象
因为BigDecimal(double)存在精度损失的风险,再精确计算或值比较的场景中可能会导致业务逻辑异常。
2. (推荐)在循环体内,字符串的连接方式使用StringBuilder的append方法进行扩展
反编译出的字节码文件显示每次循环都会new出一个StringBuilder对象,然后进行append,最后通过toString方法返回String对象,造成内存资源浪费
3. 不允许在程序任何地方中使用:(1)java.sql.Date (2)java.sql.Time (3)java.sql.Timestamp
这个在我最早写JavaWeb的时候就遇到了,当时看着教程敲Date,但是Idea中提示存在两个包,询问需要import使用哪一个,当时一直到现在都没有多想过这两者的区别。
第(1)个的问题是不记录具体时间,例如getHours()时会抛出异常;第(2)个的问题是不记录日期,getYear()等和年月日有关的操作会抛出异常;第(3)个在构造方法中调用调用父类方法,super((time/1000)*1000),fastTime和nanos分开存储秒和纳秒,当使用java.util.after(Date)进行时间比较时,当入参时java.sql.Timestamp时,会触发JDK BUG(JDK9已修复),可能导致比较时的意外结果。
标签:java,BigDecimal,构造方法,double,笔记,手册,sql,Date,Java 来源: https://www.cnblogs.com/Cra2iTeT/p/16357152.html