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类都实现了一系列方法用以完成通用的任务)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值