方法是什么
反复写同一段逻辑,不仅拖慢进度,也让代码越来越难维护。把常用的功能封装成方法,需要时调用一次就好。这在Java里和C的函数差不多,只是它必须待在类里面。
一个方法能帮你做几件事:把复杂逻辑拆成小块,让代码更容易看懂;一次编写,到处调用;改bug时只动一处,不用满世界找重复片段。比如,判断一个数是不是素数,写成方法再在main里调用,就比每次都重写循环清爽得多。
public static void func(int a) {
boolean flag = true;
for (int i = 2; i <= a - 1; i++) {
if (a % i == 0) {
System.out.println(a + "不是素数");
return;
}
}
System.out.println(a + "是素数");
}
方法定义的语法
定义一个方法的完整样子:
修饰符 返回值类型 方法名称 ([参数类型 形参]) { 方法体代码; return 返回值; }
像上面的 public static void func(int a),public static 是修饰符,void 表示没有返回值,func 是方法名,参数列表里有一个 int 类型的形参 a。
写方法时需要注意几点:
- 返回值类型必须和实际返回的数据一致;没有返回值就用
void。 - 方法名用小驼峰,见名知意。
- 方法只能定义在类里,不能嵌套定义。
- 参数列表可以为空,需要参数时必须指定类型,多个参数用逗号分隔。
形参和实参的关系很容易踩坑。调用方法时,形参不过是实参的一个临时拷贝,它有自己的内存空间。你在方法里怎么折腾形参,都不会影响调用处的实参。比如写一个交换两个整数的 swap 方法,尽管里面把形参颠倒了,main 里的变量还是纹丝不动——因为传递的只是值的副本。这不奇怪,理解了值传递的机制就明白了。
方法重载
有时候你需要处理不同类型的数据,比如对两个整数相加,又想对两个浮点数相加,甚至三个整数相加。如果给每个版本都起不同的名字,调用的地方很容易搞混。Java 允许同一个类里出现多个同名方法,只要它们的参数列表不同——这就是方法重载。
方法重载的规则很简单:
- 方法名必须一样。
- 参数列表必须不同(个数、类型、顺序至少一项不同)。
- 返回值类型无所谓,可以相同也可以不同。
那编译器怎么区分同名方法呢?靠的是方法签名。签名由方法全路径名、参数列表和返回值类型组合而成,编译后每个方法都有一个独一无二的内部名称,所以同一个类里可以安心定义多个 add。


