Java学习日记 2026.09.23
2026/9/24 12:53:19 网站建设 项目流程

今天结束了javase的最后阶段,上节课剩余的异常的finally以及处理流程,还有常用工具类的介绍。

一.finally

不管是否发生异常,finally里的代码一定会被执行
一般finally里执行的是善后的操作或一些资源清理的扫尾工作

补充:
try-catch中,try后可写小括号(可把finally合并起来)

如:
try {
return 10;
}finally {
return 20;
}
⇒ 返回的是20,即使遇到return了,finally也还是会执行
虽然可以运行,但工作中最好不要在finally中写return语句

异常的处理流程

如果有多个异常报错,应该先看第一行的,这才是根本原因
⇒ 异常信息调用栈,建议从上往下排除异常

如果向上一直传递都没有合适的方法处理异常,最终就会交给JVM处理,程序就会异常终止

流程总结

1. 程序先执行try中的代码

2. 如果try中的代码出现异常,就会结束try中的代码,看和catch中的异常类型是否匹配

3. 如果找到匹配的异常类型,就会执行catch中的代码

4. 如果没有找到匹配的异常类型,就会将异常向上传递到上层调用者

5. 无论是否找到匹配的异常类型,finally中的代码都会被执行到(在该方法结束之前执行)

6. 如果上层调用者也没有处理的了异常,就继续向上传递

7. 一直到main方法也没有合适的代码处理异常,就会交给JVM处理,此时程序就会异常终止

二.自定义异常类

要继承Exception这个类 — 默认自定义的异常类是一个受查异常/编译异常
要继承RuntimeException这个类 — 此时这个异常类是非受查异常/运行异常

⇒ 运行异常一般是代码写错:参数传错、空指针、输入错、越界、类型转换错误等
编译异常一般是外部环境问题:文件不存在、网络断开、IO失败等

三.常用工具类介绍

1、日期相关类

(1) Date类

早期用于表示日期和时间的类,位于java.util包中
Date date = new Date(123,2,5);
① Date默认的时间是1900年起计算的 → 实际是1900+123=2023,用来确定年份
② 2代表3月,0代表1月,实际输出为3月
③ 代表实际的日期

(2) LocalDateTime类

创建对象时,直接实例化不行,有3种方式
① LocalDateTime now = LocalDateTime.now();
② LocalDateTime now = LocalDateTime.of(创建指定日期)
③ LocalDateTime now = LocalDateTime.parse("2023-05-07T10:30:00"); 通过字符串创建指定日期

其常用方法:
① 获取当前日期 .now() 方法
② .getYear()
.getMonthValue()
.getDayOfMonth()
.getHour()
.getMinute()
.getSecond()
分别获取年月日时分秒

③ 创建指定日期 .of() 方法

④ 根据字符串创建日期
String date = "2026-10-01 10:30:21"
需要创建一个自定义的日期时间格式化器
DateTimeFormatter date1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
LocalDateTime date2 = LocalDateTime.parse(date, date1)
⑤ 日期运算
LocalDateTime date = LocalDateTime.now();
LocalDateTime datePlus = date.plusDays(1);
增加:plus
减少:minus

• .plusWeeks

• .plusMonths

• .plusYears

⑥ 根据当前时间获取指定时间
LocalDateTime date1 = date.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
当前所在周的周一/周天

.with(TemporalAdjusters.firstDayOfMonth())
.with(TemporalAdjusters.lastDayOfMonth())
当前所在月的第1天/最后1天

2、BigDecimal类

用来对超过16位有效位的数进行精确的运算

(1) 常用的构造方法
BigDecimal(int)/(double)/(long)/(string)
不建议,可能会丢失精度,更推荐用String去创建("2.99")

(2) 常用方法 — 加减乘

• .add() 加

• .subtract() 减

• .multiply() 乘

除法:①(抛出了异常,try-catch捕捉一下)
指定精度和舍入模式
BigDecimal □ = □.divide(□,4,RoundingMode.HALF_UP)
运算结果小数部分保留4位
HALF_UP:四舍五入(0.5向上舍入)
还有其他的舍入模式

②使用MathContext
□.divide(□, new MathContext(4,RoundingMode.HALF_UP))

适用于 财务计算(货币金额、利息计算)
科学测量(需要保留固定有效位数)
高精度工程计算(税率、费率、汇率换算)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询