闰年判断规则是:能被4整除但不能被100整除,或能被400整除;常用逻辑表达式为(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0),java 8+推荐用year.of(year).isleap()。

Java 中判断闰年,核心是依据公历闰年规则:能被 4 整除但不能被 100 整除,或者能被 400 整除的年份是闰年。直接用逻辑表达式即可,无需额外类库(Java 8 的 Year.isLeap() 是更现代的写法,但底层逻辑一致)。
用 if-else 写标准判断逻辑
这是最清晰、易理解的方式,适合教学或需要显式控制流程的场景:
- 先判断是否能被 400 整除 → 是则一定是闰年
- 再判断是否能被 100 整除 → 是则一定不是闰年
- 最后判断是否能被 4 整除 → 是则是闰年
合并成一行逻辑表达式更简洁:
boolean isLeap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
例如:2000 → 满足 % 400 == 0 → 闰年;1900 → 满足 % 100 == 0 但不满足 % 400 == 0 → 平年;2024 → 满足 % 4 == 0 且 % 100 != 0 → 闰年。
用 Java 8+ 的 Year 类(推荐用于业务代码)
借助 java.time.Year,语义明确、线程安全、自动校验年份范围(1–999999999):
import java.time.Year; boolean isLeap = Year.of(year).isLeap();
注意:Year.of(0) 会抛 DateTimeException,所以调用前建议确保年份在有效范围内(如 year > 0)。
封装成工具方法(提升复用性)
把判断逻辑抽成静态方法,便于多处调用并集中维护:
public static boolean isLeapYear(int year) {
if (year 999999999) {
throw new IllegalArgumentException("Year must be between 1 and 999999999");
}
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
调用示例:isLeapYear(2024) 返回 true;isLeapYear(2100) 返回 false。
常见误区提醒
避免这些典型错误:
- 只写
year % 4 == 0→ 会把 1900、2100 等误判为闰年 - 用浮点除法如
year / 4.0 == Math.floor(year / 4.0)→ 效率低、易出精度问题 - 忽略年份合法性校验 → 输入负数或超大值可能引发意外行为(尤其用
Year时会明确报错)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











