Java 入门后,总感觉自己写的代码 "差点意思"?不是语法不会,而是没把这些「进阶偏基础」的知识点用透。今天挑 3 个高频又实用的点,用极简例子讲透,新手也能秒懂,写代码直接升维~
一、方法重载(Overload):同一个方法名,玩出不同花样
新手总觉得 "一个功能一个方法名",代码又长又乱。方法重载能让你用同一个方法名处理不同参数,代码整洁度直接拉满,也是面试高频考点。
✅ 示例代码
public class MethodOverloadDemo {
// 基础版:计算两个整数的和
public static int add(int a, int b) {
return a + b;
}
// 重载1:支持三个整数求和(参数个数不同)
public static int add(int a, int b, int c) {
return a + b + c;
}
// 重载2:支持小数求和(参数类型不同)
public static double add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
System.out.println(add(1, 2)); // 输出3(调用第一个add)
System.out.println(add(1, 2, 3)); // 输出6(调用第二个add)
System.out.println(add(1.5, 2.5)); // 输出4.0(调用第三个add)
}
}
核心要点:方法名必须相同,参数列表(个数 / 类型 / 顺序)必须不同,和返回值无关!
二、可变参数(Varargs):告别数组,参数想传多少传多少
以前传多个同类型参数,得先建数组,又麻烦又丑。可变参数...能直接接收任意个数的同类型参数,底层还是数组,但写法超简洁。
✅ 示例代码
public class VarargsDemo {
// 可变参数写法:int... nums 等价于 int[] nums
public static int sum(int... nums) {
int total = 0;
for (int num : nums) {
total += num;
}
return total;
}
public static void main(String[] args) {
System.out.println(sum(1, 2)); // 输出3(传2个参数)
System.out.println(sum(1, 2, 3)); // 输出6(传3个参数)
System.out.println(sum()); // 输出0(传0个参数)
}
}
避坑提醒:一个方法只能有一个可变参数,且必须放在参数列表最后!
三、枚举(Enum):告别魔法值,代码更规范
新手喜欢用1/2/3或"男"/"女"这种「魔法值」,代码可读性差还容易写错。枚举能把固定的常量集合封装起来,安全又易维护。
✅ 示例代码
// 定义枚举:固定的性别类型
enum Gender {
MALE, FEMALE
}
// 定义枚举:带属性的季节(进阶用法)
enum Season {
SPRING("春天", "春暖花开"),
SUMMER("夏天", "烈日炎炎"),
AUTUMN("秋天", "秋高气爽"),
WINTER("冬天", "冰天雪地");
// 枚举的属性
private final String name;
private final String desc;
// 枚举的构造方法(必须私有)
Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
// 获取属性的方法
public String getDesc() {
return desc;
}
}
public class EnumDemo {
public static void main(String[] args) {
// 基础用法:直接使用枚举常量
Gender gender = Gender.MALE;
System.out.println(gender); // 输出MALE
// 进阶用法:使用带属性的枚举
Season summer = Season.SUMMER;
System.out.println(summer.getDesc()); // 输出烈日炎炎
// 遍历枚举(实用技巧)
for (Season season : Season.values()) {
System.out.println(season + ":" + season.getDesc());
}
}
}
总结
- 方法重载核心是「同名不同参」,能简化方法调用,提升代码整洁度;
- 可变参数
...本质是数组,使用时需注意位置和数量限制; - 枚举替代魔法值,既能保证类型安全,又能提升代码可读性,是进阶基础的必学知识点。