Day15-代码避坑指南
数据类型处理
浮点数据的处理
浮点数是属于有理数中特定子集的数字表示,在计算机中用以近似表示任意某个实数
整形是计算机中的一个基本专业术语,指没有小数部分的数据
浮点数据类型是存在精确丢失问题的。
如何保存货币数据类型?
均以最小货币单位且整型类型来进行存储,例如最小单位是分 那么10.24元就存储为int/long类型的1024,最后展示时再乘以100显示。
日期数据的处理
Java中传统日期API
- Date:表示特定的瞬间,精确到毫秒
- SimpleDateFormat:继承DateFormat类,主要用来进行格式转换
- Calender:一个工具类,为特定瞬间和一段日历字段之间的转换以及操作日历字段提供了方法
传统API存在的问题:
- 所有的日期类都是线程不安全的
- 日期、时间、时间戳没有明确对应的类。
- 不满足对于格式化和解析的需求
Java8新增 API
* LocalDate:代表日期
* LocalTime:代表时刻
* LocalDateTime:代表具体时间
* Instant:代表的是时间戳
新增API的优势
- 不变性:线程安全
- 关注点分离:时间日期都有对应的类
- 清晰:在所有的类中,方法都被明确定义用以完成相同的行为
- 实用操作:所有的新的日期/时间API类都实现了一系列方法用以完成通用的任务
日期格式化需要注意的问题
1.日期格式化时,传入pattern中表示年份统一使用小写的y
小写yyyy:表示当天所在的年
大写YYYY:代表是week in which year(JDK7之后概念)解释一下就是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,返回的YYYY就是下一年
2.在日期格式中分清楚大写M和小写m,大写的H和小写的h分别指代的意义
- M表示月份
- m表示分钟
- H是24小时制
- h表示12小时制
关于日期获取毫秒数时需要注意
- 用System.currentTimeMillis(),而不是new Date().getTime()
- 如果要获取更加精确的 纳秒级时间值,使用System.nanoTime
- 在JDK8中,针对统计时间等场景,推荐使用Instant类
控制语句规范
关于switch
- 每个case要么通过continue/break/reeturn等来种植要么注释说明程序将继续执行到哪一个case为止。
- 在switch块内必须包含一个default语句并且放到最后(如果放到中间一旦进到default后面的判断默认全开启)
- 当switch括号内变量为String并且为外部参数时必须进行null判断 避免NPE发生