Java中的方法是类中用于封装特定功能的代码块,通过方法可以将重复的逻辑抽离出来,避免代码冗余,同时让程序的结构更清晰,便于后续的维护和扩展。

Java方法的基本定义
方法的定义需要包含访问修饰符、返回值类型、方法名、参数列表和方法体几个部分,基本语法格式如下:
// 方法定义语法示例
访问修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2...) {
// 方法体逻辑
return 返回值; // 如果返回值类型不是void,需要返回对应类型的值
}
其中访问修饰符常见的有public、private、protected等,用来控制方法的访问权限。返回值类型如果是void表示该方法没有返回值,不需要写return语句或者只写return;。方法名需要符合驼峰命名规范,见名知意。
无参数无返回值方法示例
public class MethodDemo {
// 定义一个打印欢迎信息的方法,无参数无返回值
public void printWelcome() {
System.out.println("欢迎学习Java方法相关知识");
}
}
有参数有返回值方法示例
public class MethodDemo {
// 定义一个计算两个整数之和的方法,有两个int类型参数,返回int类型结果
public int add(int a, int b) {
int sum = a + b;
return sum;
}
}
Java方法的调用规则
方法定义完成后,需要调用才能执行其中的逻辑,调用的方式根据方法类型和位置有所不同。
同类中调用方法
在同一个类的非静态方法中,可以直接通过方法名调用同类的其他方法,如果是静态方法,需要用static修饰,并且静态方法只能直接调用同类中的静态方法。
public class MethodDemo {
// 非静态方法
public void test() {
// 直接调用同类中的非静态方法
printWelcome();
// 调用有参数的方法,传入实际参数
int result = add(3, 5);
System.out.println("计算结果:" + result);
}
public void printWelcome() {
System.out.println("欢迎学习Java方法相关知识");
}
public int add(int a, int b) {
return a + b;
}
}
不同类中调用方法
调用其他类中的方法,需要先创建对应类的对象,再通过对象.方法名的方式调用非静态方法,静态方法可以直接通过类名.方法名调用。
// 定义另一个类
public class Calculator {
// 静态方法,可直接通过类名调用
public static int multiply(int a, int b) {
return a * b;
}
// 非静态方法,需要创建对象调用
public int subtract(int a, int b) {
return a - b;
}
}
public class MethodDemo {
public void test() {
// 调用其他类的静态方法,直接通过类名调用
int mulResult = Calculator.multiply(2, 4);
System.out.println("乘法结果:" + mulResult);
// 调用其他类的非静态方法,先创建对象
Calculator calculator = new Calculator();
int subResult = calculator.subtract(10, 3);
System.out.println("减法结果:" + subResult);
}
}
Java方法使用实用技巧
合理使用方法重载
方法重载指的是在同一个类中,定义多个方法名相同但参数列表不同的方法,参数列表不同可以是参数数量不同、参数类型不同或者参数顺序不同,返回值类型不影响重载。重载可以让相同功能的方法适配不同的参数场景,调用时更方便。
public class OverloadDemo {
// 重载方法1:两个int类型参数相加
public int add(int a, int b) {
return a + b;
}
// 重载方法2:三个int类型参数相加
public int add(int a, int b, int c) {
return a + b + c;
}
// 重载方法3:两个double类型参数相加
public double add(double a, double b) {
return a + b;
}
}
控制方法的复杂度
单个方法的逻辑不宜过于复杂,如果一个方法的功能过多、代码行数过长,建议拆分成多个小方法,每个小方法只负责单一的功能,这样不仅便于调试,也提高了代码的可读性。
参数校验前置
在方法的开头对传入的参数进行合法性校验,比如判断参数是否为null、是否在合理范围内,避免后续逻辑出现空指针异常或者逻辑错误,让方法更健壮。
public class ValidateDemo {
// 带参数校验的方法
public int divide(int a, int b) {
// 校验除数是否为0,避免算术异常
if (b == 0) {
throw new IllegalArgumentException("除数不能为0");
}
return a / b;
}
}
避免方法副作用
方法尽量只做自己职责范围内的事情,不要随意修改传入的参数对象的状态,也不要在方法内部修改全局变量,除非有明确的业务需要,减少不必要的副作用可以让方法的行为更可预测。