杰瑞科技汇

Java函数如何调用另一个函数?

方法

在 Java 中,我们通常不使用“函数”这个词,而是使用 方法,方法是定义在类中的一段可重用的代码块。

一个方法由以下几个部分组成:

  1. 修饰符: 如 public, private, static 等,定义了方法的访问权限和特性。
  2. 返回类型: 方法执行完毕后返回的数据类型,如果方法不返回任何值,则使用 void
  3. 方法名: 给方法起的名字,用于调用。
  4. 参数列表: 传递给方法的输入值,用括号 括起来,多个参数用逗号 分隔。
  5. 方法体: 包含在大括号 中的实际代码。

最简单的例子:无参数、无返回值

这是最基本的情况,一个方法调用另一个方法,两者都不需要输入参数,也不返回任何值。

代码示例:

public class SimpleMethodCall {
    // 这是主方法,是程序的入口点
    public static void main(String[] args) {
        System.out.println("main 方法开始执行。");
        // 在 main 方法中调用 printWelcomeMessage 方法
        printWelcomeMessage();
        System.out.println("main 方法执行完毕。");
    }
    // 这是一个被调用的方法
    // 它没有参数,也没有返回值 (void)
    public static void printWelcomeMessage() {
        System.out.println("你好,欢迎来到 Java 世界!");
        System.out.println("这是一个被其他方法调用的示例。");
    }
}

输出结果:

main 方法开始执行。
你好,欢迎来到 Java 世界!
这是一个被其他方法调用的示例。
main 方法执行完毕。

代码解释:

  • public static void main(String[] args) 是程序的入口。
  • 当程序运行时,首先执行 main 方法中的代码。
  • 当执行到 printWelcomeMessage(); 这一行时,程序会暂停 main 方法的执行,跳转到 printWelcomeMessage 方法内部。
  • printWelcomeMessage 方法执行完毕后,程序会返回到 main 方法中刚才调用的位置,继续执行下一行代码 System.out.println("main 方法执行完毕。");

带参数的方法调用

方法可以接收外部传入的数据,这些数据就是参数。

代码示例:

public class ParameterizedMethodCall {
    public static void main(String[] args) {
        String studentName = "张三";
        int studentScore = 95;
        // 调用方法时,传入实际的参数(实参)
        printStudentInfo(studentName, studentScore);
        String anotherName = "李四";
        int anotherScore = 88;
        printStudentInfo(anotherName, anotherScore);
    }
    // 这是一个带参数的方法
    // 参数 name 和 score 是在调用时需要传入的值
    public static void printStudentInfo(String name, int score) {
        System.out.println("学生姓名: " + name);
        System.out.println("学生成绩: " + score);
        System.out.println("--------------------");
    }
}

输出结果:

学生姓名: 张三
学生成绩: 95
--------------------
学生姓名: 李四
学生成绩: 88
--------------------

代码解释:

  • printStudentInfo(studentName, studentScore); 这是在调用方法,括号里的 studentNamestudentScore实参(实际参数)。
  • public static void printStudentInfo(String name, int score) 这是定义方法,括号里的 namescore形参(形式参数)。
  • 调用时,实参的值会传递给形参。studentName 的值 "张三" 传递给 namestudentScore 的值 95 传递给 score

带返回值的方法调用

方法执行完毕后,可以返回一个值给调用者。

代码示例:

public class ReturnValueMethodCall {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        // 调用 getSum 方法,并将其返回值赋给 sum 变量
        int sum = getSum(a, b);
        System.out.println("计算结果是: " + sum);
        // 也可以直接在表达式中使用返回值
        System.out.println("直接打印结果: " + getSum(5, 7));
    }
    // 这是一个带返回值的方法
    // 返回类型是 int,表示这个方法会返回一个整数
    public static int getSum(int num1, int num2) {
        int result = num1 + num2;
        return result; // 使用 return 关键字返回结果
    }
}

输出结果:

计算结果是: 30
直接打印结果: 12

代码解释:

  • getSum(a, b) 调用方法,方法执行 return result; 后,将 result 的值(30)返回。
  • 这个返回的值被赋给了 main 方法中的 sum 变量。
  • return 语句会立即结束方法的执行。

综合示例:方法互相调用(调用链)

一个方法可以调用另一个方法,而被调用的方法又可以调用第三个方法,这形成了一个“调用链”。

代码示例:

public class MethodCallChain {
    public static void main(String[] args) {
        System.out.println("--- 开始准备晚餐 ---");
        prepareDinner();
        System.out.println("--- 晚餐准备完毕 ---");
    }
    // 准备晚餐的方法
    public static void prepareDinner() {
        System.out.println("1. 开始准备晚餐。");
        cookRice();     // 调用 cookRice 方法
        cookVegetable(); // 调用 cookVegetable 方法
        System.out.println("4. 晚餐已准备好,可以上桌了。");
    }
    // 煮饭的方法
    public static void cookRice() {
        System.out.println("  2. 正在煮饭...");
    }
    // 炒菜的方法
    public static void cookVegetable() {
        System.out.println("  3. 正在炒菜...");
    }
}

输出结果:

--- 开始准备晚餐 ---
1. 开始准备晚餐。
  2. 正在煮饭...
  3. 正在炒菜...
4. 晚餐已准备好,可以上桌了。
--- 晚餐准备完毕 ---

代码解释:

  1. main 方法调用 prepareDinner()
  2. prepareDinner() 开始执行,打印第一行信息。
  3. prepareDinner() 调用 cookRice()cookRice() 执行完毕后返回。
  4. prepareDinner() 继续执行,调用 cookVegetable()cookVegetable() 执行完毕后返回。
  5. prepareDinner() 继续执行,打印最后一行信息,然后执行完毕,返回 main 方法。
  6. main 方法继续执行,打印结束信息。

static 的重要说明

在以上所有例子中,方法前都有 static 关键字,这意味着这些方法属于 ,而不是属于类的某个特定对象(实例),我们可以直接在 main 方法(也是 static 的)中调用它们。

如果方法没有 static 关键字,就必须先创建类的对象,然后通过对象来调用该方法。

示例(非静态方法调用):

public class NonStaticExample {
    // 这是一个非静态方法
    public void sayHello() {
        System.out.println("你好,我是一个非静态方法!");
    }
    public static void main(String[] args) {
        // 错误!不能直接调用非静态方法
        // sayHello(); // 编译会报错
        // 正确的做法:先创建类的对象
        NonStaticExample myObject = new NonStaticExample();
        // 然后通过对象来调用方法
        myObject.sayHello();
    }
}
场景 调用方式 示例
无参数,无返回值 直接使用方法名 + printWelcomeMessage();
有参数,无返回值 方法名 + (实参列表); printStudentInfo("张三", 95);
无参数,有返回值 变量 = 方法名(); 或直接在表达式中使用 int sum = getSum(10, 20);
有参数,有返回值 变量 = 方法名(实参列表); int avg = calculateAverage(80, 90, 100);
调用非静态方法 对象名.方法名(); myObject.sayHello();

掌握方法的调用是学习 Java 的核心基础,它使得代码模块化、可重用且易于维护。

分享:
扫描分享到社交APP
上一篇
下一篇