01 Math类
【注意】:round在四舍五入时,只会四舍五入小数点后第一位,例如:4.499,的结果是4.
02 System类
【解释】:currentTimeMillis返回的是从1970-1-1 0:0:0开始到此刻的毫秒值,所以返回值才定义成long类型的,1s = 1000ms,1ms = 1000微妙,1微妙 = 1000纳秒。System类的静态方法currentTimeMillis方法通常用于做代码的性能分析:在程序执行前记录一下h1,执行之后记录一下h2,最后让(h2-h1)/1000.0 + "s"。
03 Runtime类(了解)
04 BigDecimal类
【做法】:在进行浮点数运算时,先将待进行运算的浮点数数据封装给BigDecimal对象,再通过调用BigDecimal方法进行相关运算。怎么封装呢?答:如下图所示,一般采用第二种形式直接封装浮点型数据,而不需要进行字符串转换(因为BigDecimal方法的valueOf方法底层会帮我们进行转换)
【补充】:BigDecimal类中底层是通过数组的形式存储浮点数(包括小数点)然后再进行位运算的。
【补充】:BigDecimal类中重写了Object类的toString方法,所以我们可以直接输出对象中的值。
05 JDK之前传统的日期,时间
05_01 Date类
【1】使用Date date = new Date()表示实例化出一个日期对象,里面封装着系统当前的日期和时间
【2】使用日期对象调用getTime可获取日期对象所表示的时间毫秒值。
【3】如何让时间毫秒值封装成日期对象?
① 通过new Date(时间毫秒值),直接实例化出一个日期对象。
② 通过日期对象调用setTime(时间毫秒值),使得主调的日期对象中的日期时间更改成入参所表示的日期时间。解释:该方法的返回值为void,由于Date的对象是可变的,该方法是直接把主调Date对象的值修改了。
【4】sout可以直接输出Date对象中的日期时间数据。
05_02 SimpleDateFormat类
【1】SimpleDateFormat表示日期时间格式器,用于格式化Date对象或时间毫秒值的日期时间。
【2】实例化SimpleDateFormat对象:new SimpleDateFormat("YYYY-MM-dd HH-mm-ss EEE")
【3】格式化Date对象/时间毫秒值:SimpleDateFormat对象.format(Date对象/时间毫秒值),将格式化的结果以字符串的形式返回。
【4】如何将表示日期时间的字符串转换成Date对象:使用SimpleDateFormat对象调用parse方法,并将表示日期时间的字符串以入参传给该方法。注意:字符串中的日期时间的格式必须要与该SimpleDateFormat对象的格式一致。
05_03 Calendar类
【1】为什么要有Calendar类?答:如果我们想要获取/修改某个日期时间中的具体值时使用Date类和SimpleDateFormat类是做不到的,于是引入了Calendar类。Calendar类可以获取/修改某个日期时间中的具体值。
【2】Calendar类是抽象类,是不能实例化对象的,Calendar类中提供了一个静态方法getInstance可以获取Calendar的对象。
【3】可以使用sout直接打印Calendar对象中的所有数据。
【4】Calendar类的基础方法:get,set,add,注意:field这个参数得传Calendar类中相关的常量
【5】Calendar对象可以转换成Date对象:getTime()
【6】Calendar对象可以获取时间毫秒值:getTimeMillis()
【7】注意:Calendar对象中的月份是从0开始计的!!!!!!!!!!!
06 JKD8开始新增的日期,时间
06_01 为什么要学新的日期时间类
06_02 LocalDate,LocalTime,LocalDateTime
06_03 Zoneld,ZonedDateTime
【1】为什么要学习这两个类?答:上面的LocalDate,LocalTime,LocalDateTime默认获取系统的当前时间,但在开发中我们可能会需要获取到美国,英国等地方当前的时间进行一些处理,遇到这样的需求我们不可能去根据相关地理知识去手算,所有JDK8提供了ZoneID,ZoneDateTime这两个类
【2】ZoneId代表的是时区id:为了方便记忆,通常我们会用一个时区里的标志性城市来代表这个时区,格式一般是:州名/城市名 或 国家名/城市名,ZoneId表示的就是某时区的id。
【3】ZoneId这个类的目的:封装时区id给ZoneId对象。
【4】ZoneId对象调用getID方法可以获取该对象里的时区Id,也可以直接用sout输出ZoneId对象,因为sout会自动调用ZoneId类中的toString方法,而ZoneId里的toString方法底层其实也是调用了getId方法。
【5】ZonedDateTime这个类的目的:封装某个ZoneID对象所指时区的时间。
06_04 Instant
06_05 DateTimeFormatter
06_10 Period
06_09 Duration
07 Arrays
07_01 简单介绍
【注意】
① 使用Arrays.copyOf如果新数组的长度小于原数组,只会拷贝指定长度。
② copyOfRange 和 copyOf方法的返回值都是新的数组对象。
③ setAll 和 sort方法是对原数组本身的数据做更改。
07_02 数组中对象的排序
08 JDK8新特性:Lambda表达式
08_01 认识Lambda表达式
08_02 Lambda表达式的省略规则
09 JDK8新特性:方法引用"::":进一步简化Lambda表达式
【注意】:
① 使用方法引用简化lambda表达式,必须得是lambda表达式才行。
② 如果看到代码里面有::则表示这里使用了方法引用 —》用于Lambda表达式的。
09_01 静态方法的引用
【解释】:使用静态方法的引用的条件,不仅要满足是函数式接口的匿名内部类,而且经过初步简化后,留下的语句是一条调用其他类中静态方法的语句,且前后的参数是一致的,则可以使用静态方法的引用。
09_02 实例方法的引用
【解释】:使用实例方法的引用的条件,不仅要满足是函数式接口的匿名内部类,而且经过初步简化后,留下的语句是一条某对象在调用实例方法的语句,且前后的参数是一致的,则可以使用实例方法的引用。
09_03 特定类型方法的引用
【解释】:使用特定类型方法的引用的条件,不仅要满足是函数式接口的匿名内部类,而且经过初步简化后,留下的语句是一条前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参,则此时就可以使用特定类型的方法引用。
【修改方法】:查看该实例方法是哪个类的实例方法,格式:类名::实例方法名
09_04 构造器引用(并不常见)
【解释】:使用构造器引用的条件,不仅要满足是函数式接口的匿名内部类,而且经过初步简化后,留下的语句是一条创建对象的语句,且前后的参数是一致的,则此时就可以使用构造器引用。