Java方法入门:定义、调用与参数传递¶
一、什么是方法?¶
在Java中,“方法”就像一个小工具。我们可以把重复要做的事情(比如计算两数之和、打印一段文字)封装到方法里,以后需要的时候直接“调用”这个方法,不用每次重复写代码。就像我们做饭时,把“切菜”步骤写成一个方法,之后每次做饭切菜都直接调用这个方法,省时又省力。
二、方法的定义格式¶
定义一个方法,需要明确它的功能、输入和输出。Java方法的基本格式如下:
修饰符 返回值类型 方法名(参数列表) {
// 方法体:方法要执行的具体代码
return 返回值; // 如果有返回值,需要用return返回结果
}
关键部分解释:¶
- 修饰符:暂时了解
public static(表示公开、静态方法,后面会讲),初学者可先忽略细节。 - 返回值类型:方法执行完后,是否要返回结果?如果返回,结果是什么类型(如
int整数、String字符串、void无返回值)。 - 方法名:要能体现方法功能,遵循小驼峰命名法(如
add、printName)。 - 参数列表:调用方法时需要传入的数据,格式是
参数类型 参数名1, 参数类型 参数名2...(如果没有参数,括号为空)。 - 方法体:大括号
{}里的代码,是方法实际执行的逻辑。 - return:如果有返回值,用
return返回对应类型的结果;void方法无返回值,可写return;或省略。
定义示例1:无参数无返回值(打印信息)¶
public static void printHello() {
// 方法体:打印一句话
System.out.println("Hello, 方法!");
}
定义示例2:有参数有返回值(计算两数之和)¶
public static int add(int a, int b) {
// 参数a和b是形参(方法定义时的参数)
int sum = a + b;
return sum; // 返回计算结果
}
三、方法的调用¶
定义好方法后,我们需要在其他地方“调用”它才能执行。调用格式是:对象名.方法名(参数值)(如果是静态方法,也可以直接类名.方法名(参数值))。
1. 调用无参数方法¶
public class MethodDemo {
// 定义printHello方法(前面示例)
public static void printHello() {
System.out.println("Hello, 方法!");
}
public static void main(String[] args) {
// 调用printHello方法:直接写方法名,括号空着
printHello(); // 输出:Hello, 方法!
}
}
2. 调用有参数方法¶
public class MethodDemo {
// 定义add方法(前面示例)
public static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
// 调用add方法,传入实参(调用时的具体值)
int result = add(3, 5); // 实参3和5传给形参a和b
System.out.println("3+5的结果是:" + result); // 输出:3+5的结果是:8
}
}
3. 调用时的注意事项¶
- 参数顺序和类型要匹配:调用时传入的参数,顺序和类型必须与方法定义的参数列表一致。
- 返回值要处理:如果方法有返回值(如
int),调用时需要用变量接收结果(如int result = add(3,5));如果是void无返回值,直接调用即可。
四、参数传递:值传递的奥秘¶
参数传递是Java方法中非常重要的概念。这里我们重点理解基本数据类型的参数传递(如int、double、boolean等)。
1. 形参 vs 实参¶
- 形参:方法定义时声明的参数(如
add方法中的a和b),仅在方法内部有效。 - 实参:调用方法时传入的具体值(如
add(3,5)中的3和5),是真实传递给形参的数据。
2. 值传递的特点¶
Java中参数传递是值传递:方法调用时,实参的值会被“复制”一份传给形参,形参的修改不会影响实参。
示例:基本类型参数传递¶
public class ValuePassDemo {
// 定义一个修改参数的方法
public static void changeNum(int num) {
num = 100; // 修改形参num的值
System.out.println("方法内部修改后,num的值:" + num); // 输出:100
}
public static void main(String[] args) {
int x = 10; // 实参x的值
System.out.println("调用方法前,x的值:" + x); // 输出:10
changeNum(x); // 调用方法,传入x
System.out.println("调用方法后,x的值:" + x); // 输出:10(原x未变)
}
}
结果分析:
调用changeNum(x)时,x的值(10)被复制传给形参num。方法内部修改num为100,但原变量x的值不会受影响,因为它们是两个独立的变量。
3. 对比:引用类型参数传递¶
如果参数是数组、对象等引用类型(如String、ArrayList),情况会不同。但对于初学者,我们先聚焦基本类型,后续再深入学习引用类型。
五、小练习:写一个计算平均值的方法¶
需求:定义一个方法,传入3个int类型的数,返回它们的平均值(结果保留整数)。
代码示例:
public class MethodPractice {
// 定义求平均值的方法
public static int average(int a, int b, int c) {
int sum = a + b + c;
return sum / 3; // 整数除法,结果取整
}
public static void main(String[] args) {
int avg = average(10, 20, 30);
System.out.println("三个数的平均值是:" + avg); // 输出:20
}
}
总结¶
- 方法:是一段可重复调用的代码块,用于封装功能、提高代码复用性。
- 定义格式:
修饰符 返回值类型 方法名(参数列表) { 方法体; }。 - 调用方式:类名.方法名(实参)(静态方法)或对象.方法名(实参)(非静态方法)。
- 参数传递:基本类型参数是“值传递”,形参修改不影响实参;引用类型后续学习。
通过今天的学习,你已经掌握了Java方法的入门知识,接下来可以尝试写更多不同功能的方法,比如计算斐波那契数列、判断素数等,巩固所学内容!