Chloe's archive
← Back to blog

2026年7月11日

Java 方法、参数与返回值

整理方法的定义与调用、参数、void、返回值、作用域和值传递。

方法可以把一段明确的操作封装起来。大程序通常由很多小方法组成,每个方法只负责一件相对清楚的事情。

方法是什么

下面这句本身就是一个方法声明:

public static void main(String[] arguments)

定义一个无参数、无返回值的方法:

public static void sayHello() {
    System.out.println("Hello");
}

调用方法:

sayHello();

方法应该放在哪里

Java 中,方法应该定义在类里面,但不能定义在另一个方法内部。

错误写法:

public static void main(String[] arguments) {
    public static void threeLines() {
    }
}

正确写法:

class NewLine {
    public static void threeLines() {
    }

    public static void main(String[] arguments) {
    }
}

参数

参数让方法能够接收外部数据。

public static void printSquare(int x) {
    System.out.println(x * x);
}

调用时把实际值传进去:

printSquare(3);

多个参数之间使用逗号分隔:

public static void add(int a, int b) {
    System.out.println(a + b);
}

add(2, 3);

如果参数类型是 double,传入 int 时 Java 可以自动转换:

public static void printSquare(double x) {
    System.out.println(x * x);
}

printSquare(5); // 输出 25.0

void 与返回值

void 表示方法不返回任何值。

public static void sayHello() {
    System.out.println("Hello");
}

它只是完成输出,没有把结果交给调用者。

有返回值的方法需要写明返回类型,并使用 return

public static double square(double x) {
    return x * x;
}

调用后可以继续参与计算:

double result = square(5) + 10;

直接打印和返回结果的区别:

public static void printSquare(double x) {
    System.out.println(x * x);
}

public static double square(double x) {
    return x * x;
}

printSquare() 只负责输出;square() 把结果返回,因此更容易复用。

变量作用域

变量只在定义它的代码块中有效。代码块就是一对大括号 {}

public static void test(int x) {
    System.out.println(x);
}

参数 x 只在 test() 方法内部有效。

参数不会改变外部基本类型变量

class SquareChange {
    public static void printSquare(int x) {
        x = x * x;
        System.out.println("printSquare x = " + x);
    }

    public static void main(String[] arguments) {
        int x = 5;
        printSquare(x);
        System.out.println("main x = " + x);
    }
}

输出中,方法内部的 x 会变成 25,但 main 中的 x 仍然是 5。调用方法时传入的是当前值的副本,两个 x 是不同的变量。

方法与抽象

方法是程序的构建模块:

  • 可以单独开发和测试;
  • 可以重复使用;
  • 使用者不必了解内部实现。

例如调用:

Math.pow(2, 3);

我们只需要知道它会返回幂运算结果,不必先理解内部如何完成计算。这种隐藏实现细节、只暴露使用方式的思想叫作抽象。

本篇小结

方法必须定义在类中。参数负责接收数据,void 方法只执行操作,有返回类型的方法会通过 return 交回结果。基本类型参数传入的是值的副本,因此方法内部的重新赋值不会改变外部变量。