Java方法入门:定义、调用与参数传递,看完就会

Java方法入门:定义、调用与参数传递

一、什么是方法?

在Java中,“方法”就像一个小工具。我们可以把重复要做的事情(比如计算两数之和、打印一段文字)封装到方法里,以后需要的时候直接“调用”这个方法,不用每次重复写代码。就像我们做饭时,把“切菜”步骤写成一个方法,之后每次做饭切菜都直接调用这个方法,省时又省力。

二、方法的定义格式

定义一个方法,需要明确它的功能输入输出。Java方法的基本格式如下:

修饰符 返回值类型 方法名(参数列表) {
    // 方法体:方法要执行的具体代码
    return 返回值; // 如果有返回值,需要用return返回结果
}

关键部分解释:

  • 修饰符:暂时了解public static(表示公开、静态方法,后面会讲),初学者可先忽略细节。
  • 返回值类型:方法执行完后,是否要返回结果?如果返回,结果是什么类型(如int整数、String字符串、void无返回值)。
  • 方法名:要能体现方法功能,遵循小驼峰命名法(如addprintName)。
  • 参数列表:调用方法时需要传入的数据,格式是参数类型 参数名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方法中非常重要的概念。这里我们重点理解基本数据类型的参数传递(如intdoubleboolean等)。

1. 形参 vs 实参

  • 形参:方法定义时声明的参数(如add方法中的ab),仅在方法内部有效。
  • 实参:调用方法时传入的具体值(如add(3,5)中的35),是真实传递给形参的数据。

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. 对比:引用类型参数传递

如果参数是数组、对象等引用类型(如StringArrayList),情况会不同。但对于初学者,我们先聚焦基本类型,后续再深入学习引用类型。

五、小练习:写一个计算平均值的方法

需求:定义一个方法,传入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方法的入门知识,接下来可以尝试写更多不同功能的方法,比如计算斐波那契数列、判断素数等,巩固所学内容!

小夜