目录
一、游戏打包exe
二、Math
1、Math类的常用方法
①、代码实现
2、小结
3、练习
①、练习一:改进判断一个数是否为一个质数
②、练习二:自幂数
三、System
1、时间原点
2、常用方法
3、课堂练习
4、注意事项
5、小结
四、Runtime
1、常用方法
2、练习
五、Object
1、Object的构造方法
2、Object的成员方法
①、toString()
②、equals()【大厂面试题】
③、clone() 【★】
④、深、浅克隆
【tips 1】:
⑤、小结
六、Objects
1、Objects的成员方法
2、小结
七、BigInteger
1、BigInteger构造方法
2、构造方法小结
3、BigInteger常见方法
4、BigInteger底层存储原理
5、BigInteger的存储上限
6、小结
八、BigDecimal
1、计算机中的小数
2、BigDecimal的构造方法
3、BigDecimal的常见方法
①、代码实现
②、RoundingMode(枚举)
4、BigDecimal底层存储方式
5、小结
九、正则表达式
1、正则的使用场景
2、正则表达式的作用
3、正则表达式的规则
①、字符类(只匹配一个字符)
②、预定义字符(只匹配一个字符)
③、数量词(可以匹配多个字符)
4、正则表达式基本练习
①、手机号、邮箱号、电话号
②、身份证号
5、小结
6、爬虫
①、本地爬虫
②、网络爬虫
③、扩展练习
7、有条件的爬取数据
8、贪婪爬取和非贪婪爬取
9、正则表达式在字符串方法中的使用
10、分组
①、捕获分组正则内部练习
②、捕获分组正则外部练习
③、非捕获分组
④、小结
十、JDK7以前的时间相关类
1、时间的相关知识点
2、Data类
①、时间类代码示例
②、练习:时间计算
③、小结
3、SimpleDateFormat类
①、SimpleDateFormat类构造方法
②、练习(按照指定格式展示)
③、练习(秒杀活动)
④、小结
4、Calendar
①、Calendar的常用方法
②、小结
十一、JDK8新增的时间相关类
1、为什么要学习JDK8新增的时间相关类呢?
2、JDK8时间相关类
①、ZoneId时区【Date类】
②、Instant时间戳【Date类】
③、ZoneDateTime带时区的时间【Date类】
④、DataTimeFormatter用于时间的格式化和解析【日期格式化类】
⑤、LocalDate(年月日)【日历类】
⑥、LocalTime(时分秒)【日历类】
⑦、LocalDateTime【日历类】
⑧、Duration 时间间隔(秒、纳秒)【工具类】
⑨、Period 时间间隔(年、月、日)【工具类】
⑩、ChronoUnit (两个日期之间的间隔 所有单位) -- 最常用 【工具类】
⑪、小结
十二、包装类
1、如何理解包装类?
2、获取Integer对象的方式(了解)
①、JDK5以前的方式
②、这两种方式获取对象的区别【掌握】
③、在以前包装类如何进行计算?
④、自动装箱和自动拆箱(JDK5)
⑤、小结
3、Integer成员方法
①、为什么Integer的返回值设计成String类型?
②、示例代码
③、键盘录入
十三、综合练习
1、键盘录入
示例代码
2、算法水题(自我实现parseInt方法)
示例代码
3、算法水题(自己实现toBinaryString方法)
示例代码
4、算法水题(计算活了多少天)
①、JDK7
②、JDK8
5、算法水题(闰年判断)
①、JDK7
②、JDK8

一、游戏打包exe
游戏打包exe要考虑的因素:

游戏打包exe核心步骤:

详情见《打包exe文档》
二、Math

1、Math类的常用方法

①、代码实现






2、小结

3、练习
①、练习一:改进判断一个数是否为一个质数

代码实现:


②、练习二:自幂数

代码实现:

三、System

1、时间原点
计算机中的时间原点:1970年1月1日 00:00:00
中国由于时差,我们获取的时间是1970年1月1日 08:00:00

2、常用方法



3、课堂练习


4、注意事项





5、小结

四、Runtime

1、常用方法



2、练习

代码实现:


五、Object

1、Object的构造方法
 
   
2、Object的成员方法

代码实现:
①、toString()



②、equals()【大厂面试题】



③、clone() 【★】




④、深、浅克隆
实现对象克隆有两种方式:
- 实现Cloneable接口( 该接口为标记接口,不含任何方法)并重写Object类中的clone()方法
- 实现Serializable接口,通过对象序列化和反序列化实现克隆,可以实现真正的深度克隆。
浅拷贝:

深拷贝:

小结:Object中的克隆方法是浅克隆方法

验证:

但是我们想要深克隆怎么办?【重写clone方法】
User.java


在以后我们进行克隆的时候,会使用一个第三方的克隆工具(Gson):
1、将第三方写的代码导入到项目中

2、编写代码

【tips 1】:
Gson是谷歌官方推出的支持 JSON 和Java对象相互转换的 Java序列化/反序列化库
Gson可以将对象序列化成JSON,也可以将JSON反序列化成对象,所以我们可以用它进行深拷贝
【参考资料】:
[1] 【Java基础】对象深克隆和浅克隆的原理及实现
⑤、小结

六、Objects

1、Objects的成员方法

代码实现:


2、小结

七、BigInteger

1、BigInteger构造方法

代码实现:





2、构造方法小结

3、BigInteger常见方法

代码实现:


4、BigInteger底层存储原理




5、BigInteger的存储上限

6、小结

八、BigDecimal

1、计算机中的小数

2、BigDecimal的构造方法
代码实现:



3、BigDecimal的常见方法

①、代码实现

②、RoundingMode(枚举)

4、BigDecimal底层存储方式

代码验证:


5、小结

九、正则表达式
1、正则的使用场景

正常代码书写:

正则书写:

2、正则表达式的作用

3、正则表达式的规则
①、字符类(只匹配一个字符)

代码实现:






②、预定义字符(只匹配一个字符)

代码实现:




③、数量词(可以匹配多个字符)


4、正则表达式基本练习
①、手机号、邮箱号、电话号





推荐插件:any-rule

②、身份证号



根据忽略大小写的语法对身份证号码的正则进行改写:


idea快捷键:Shift + Alt + ↑(将当前行移动到上一行)
5、小结


6、爬虫
①、本地爬虫

代码实现:


改进:(方法抽取)

②、网络爬虫

③、扩展练习

代码实现:


7、有条件的爬取数据

代码实现:

8、贪婪爬取和非贪婪爬取




9、正则表达式在字符串方法中的使用


10、分组

①、捕获分组正则内部练习





②、捕获分组正则外部练习


③、非捕获分组

可以不写

④、小结


十、JDK7以前的时间相关类

1、时间的相关知识点

那么现在原子钟成为了现在统一时间


2、Data类

①、时间类代码示例




②、练习:时间计算

代码实现:


③、小结

3、SimpleDateFormat类

①、SimpleDateFormat类构造方法



JDK文档中搜索SimpleDateFormat:

代码实现:




②、练习(按照指定格式展示)



③、练习(秒杀活动)

代码实现:(字符串本身是不能比较的,是需要先转换成Date类型)


④、小结

4、Calendar



①、Calendar的常用方法

代码实现:



另一种写法:

get方法:

set & add方法:


②、小结

十一、JDK8新增的时间相关类
1、为什么要学习JDK8新增的时间相关类呢?



2、JDK8时间相关类

①、ZoneId时区【Date类】


代码实现:
1、获取所有的时区名称

2、获取当前系统的默认时区

3、获取指定的时区

②、Instant时间戳【Date类】

代码实现:
1、获取当前时间的Instant对象(标准时间)

2、根据(秒/毫秒/纳秒)获取Instant对象

3、指定时区

当前时区的正确时间(已经加完了8小时)

4、isXxx判断

6、Instant minusXxx(long millisToSubtract) 减少时间系列的方法

③、ZoneDateTime带时区的时间【Date类】

代码实现:






④、DataTimeFormatter用于时间的格式化和解析【日期格式化类】

代码实现:


⑤、LocalDate(年月日)【日历类】

代码实现:








⑥、LocalTime(时分秒)【日历类】
代码实现:


计算时比较精确:(秒杀活动)
⑦、LocalDateTime【日历类】


⑧、Duration 时间间隔(秒、纳秒)【工具类】

代码实现:

⑨、Period 时间间隔(年、月、日)【工具类】

⑩、ChronoUnit (两个日期之间的间隔 所有单位) -- 最常用 【工具类】

⑪、小结
方法通性:
- 获取当前时间:now
- 获取指定时间:ofXxx
- 修改当前时间:withXxx
- 把当前的时间往前推:minusXxx
- 把当前的时间往后加:plusXxx
十二、包装类

1、如何理解包装类?


2、获取Integer对象的方式(了解)

①、JDK5以前的方式

②、这两种方式获取对象的区别【掌握】

③、在以前包装类如何进行计算?

④、自动装箱和自动拆箱(JDK5)

⑤、小结

3、Integer成员方法

①、为什么Integer的返回值设计成String类型?
第一个原因:在int和long类型中,0无法开头

第二个原因:long和int类型是有长度限制的,以int类型为例:int类型最多能存放10位的数字,最大为2147483647
②、示例代码


③、键盘录入

十三、综合练习
1、键盘录入

示例代码




2、算法水题(自我实现parseInt方法)

示例代码


3、算法水题(自己实现toBinaryString方法)

示例代码

4、算法水题(计算活了多少天)

示例代码
①、JDK7

②、JDK8

5、算法水题(闰年判断)

示例代码
①、JDK7

但上述两种方式(计算毫秒值)还是比较麻烦,我们可以用Calendar类进行简化



②、JDK8





















