Java开发避坑总结1

Java开发避坑总结1,第1张

Java开发避坑总结1

浮点数据

  1. 所有的货币都以最小单位且整型类型来进行存储(可以10的小数位的个数次方进行处理,变为整数)
  2. 由于浮点数据容易出现精度丢失的问题,所以在mysql中尽量使用decimal(M,D)进行存储(M指十进制中小数点左右两边的总个数,D指十进制中小数点右侧的数字个数,同时M>D, D默认为0);当数据库字段使用decimal类型,java同样使用decimal类型。
  3. 若数据无法使用decimal定义数据时,可考虑字符串或转为整数进行存储或运算。
  4. 浮点数之间、基本数据类型的等值判断,都不能用“==”来比较;包装数据类型不能用equals来判断。
  5. BigDecimal的等值比较用compareTo(忽略精度,返回-1 or 0 or 1)
  6. equals方法会比较精度,返回值为true or false
  7. 禁止使用构造方法BigDecimal(double)的方法把double转化为BigDecimal对象

日期数据

  1. 关于日期可多用java8增加的API:
    LocalDate: 代表日期
    LocalTime: 时刻
    LocalDateTime:具体时间
    Instant: 时间戳
  2. yyyy表示当天所在的年,YYYY表示当周所在的年,如果当周存在跨年情况,返回的为下一年;
    M : 月份 m : 分钟
    H : 24小时制的小时数 h : 12小时制的小时数
  3. 获取当前毫秒数:
    1. System.currentTimeMillis();
    2. 获取纳秒数,System.nanoTime
    3. JDK8,针对统计时间等场景,推荐使用Instant类型

传统API中日期问题:

1. 所有的日期类都是线程不安全的
2. 日期、时间、时间戳没有明确对应的类
3. 对于格式化和解析的需求(JDK提供java.text.DateFormat抽象类,但通常情况下,SimpleDateFormat类被用于此类需求)

JDK8日期API的新增优势

1. 不变性(线程安全)
2. 关注点分离(时间日期都有各自的对应类)
3. 清晰(在所有的类中,方法都被明确定义用以完成相同的行为)
4. 实用 *** 作(所有新的日期/时间API类都实现了一系列方法用以完成通用的任务)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5435192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存