1、包装类/BigDecimal
BigDecimal专门用在处理财务数据 处理高精度数值
使用BigDecimal.valueOf()
初始化数据 new BigDecimal()
会丢失精度
2、Comparable/Comparator
3、hashCode与equals
4、String/StringBuilder/StringBuffer
5、时间
5.1 时间戳
时间戳为1970-01-01T00:00:00Z之后经过的时间 java精确到毫秒
java8之前使用Timestamp
java8使用Instant
java8 Clock 提供了使用时区和最佳可用系统时钟访问当前的瞬间、日期和时间 java9支持纳秒
5.2 Date
用来封装日期和时间 比较简单 可以比较时间
5.3 SimpleDateFormat
格式化日期 线程不安全?
字母 | 描述 |
---|---|
G | 纪元标记 |
y | 四位年份 |
M | 月份 |
d | 一个月的日期 |
h | A.M./P.M. (1~12)格式小时 |
H | 一天中的小时 (0~23) |
m | 分钟数 |
s | 秒数 |
S | 毫秒数 |
E | 星期几 |
D | 一年中的日子 |
F | 一个月中第几周的周几 |
w | 一年中第几周 |
W | 一个月中第几周 |
a | A.M./P.M. 标记 |
k | 一天中的小时(1~24) |
K | A.M./P.M. (0~11)格式小时 |
z | 时区 |
' | 文字定界符 |
" | 单引号 |
5.4 Calendar
常量 | 意义 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 (0-11) |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几 |
使用比较灵活 功能强大
可以增减时间 获取精确时间
GregorianCalendar为Calendar实现类 功能更强大
5.5 java8
主要用来替代旧api
类的名称 | 描述 |
---|---|
Instant | 时间戳 |
Clock | 时钟比如获取美国纽约的时间 |
Duration | 计算两个“时间”的间隔 |
Period | 用于计算两个“日期”的间隔 |
LocalDate | 只包含日期 比如:2020-04-05 |
LocalTime | 只包含时间 比如:12:34:21 |
LoacalDateTime | 包含日期和时间 比如:2021-04-05 12:34:34 |
Year | 年 |
YearMonth | 年-月 |
MonthDay | 月-日 |
Month | 1-12 |
DayOfWeek | |
ZonrOffset | 时区偏移量 |
ZonedDateTime | 带时区的时间 |
ZonedId | 代表一个时区 |
DateTimeFormatter | 时间格式化 |
参考:
https://blog.csdn.net/java_2017_csdn/article/details/76000652
https://www.runoob.com/java/java-date-time.html
Clock https://blog.csdn.net/qq_31635851/article/details/117778881
java8 https://www.cnblogs.com/xkkdev/p/15908719.html
6、Runtime
使用单例模式 可以获得虚拟机的信息 如查看内存、执行进程、gc()
7、不定参数
形如void test(int ...param)
param的操作与数组相同
8、float转double 精度不准
float直接转double精度不准确 可以将float转字符再通过包装类转为double