目录
一、游戏打包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类进行简化