全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-09 5 分钟 ✍️ juanwangdev

方法的返回值

方法的返回值是方法执行后输出的结果。

返回值概念

什么是返回值

返回值是方法执行完成后返回给调用者的结果。

Java
// 方法的返回值
// 1. 提供方法执行结果
// 2. 供调用者使用
// 3. 可用于后续计算或判断

return关键字

return返回结果

Java
public int add(int a, int b) {
    return a + b;  // 返回计算结果
}

// 调用并使用返回值
int result = add(5, 3);  // result = 8

return结束方法

return执行后立即结束方法,后续代码不执行。

Java
public int getMax(int a, int b) {
    if (a > b) {
        return a;  // 返回后方法结束
        // 下面代码不执行
    }
    return b;
}

多个return

Java
public String getGrade(int score) {
    if (score >= 90) {
        return "优秀";
    } else if (score >= 60) {
        return "合格";
    } else {
        return "不合格";
    }
}

String grade = getGrade(85);  // "合格"

返回类型

void无返回值

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

Java
public void printMessage(String msg) {
    System.out.println(msg);
    // 无return语句,或只写return;
}

// 调用
printMessage("Hello");  // 不能赋值给变量

// void方法可单独使用return结束方法
public void check(int num) {
    if (num < 0) {
        return;  // 直接结束方法
    }
    System.out.println("正数: " + num);
}

基本类型返回值

Java
// 返回int
public int getNumber() {
    return 100;
}

// 返回double
public double calculateAverage(int a, int b) {
    return (a + b) / 2.0;
}

// 返回boolean
public boolean isEven(int num) {
    return num % 2 == 0;
}

// 返回char
public char getFirstChar(String str) {
    return str.charAt(0);
}

引用类型返回值

Java
// 返回String
public String getMessage() {
    return "Hello World";
}

// 返回自定义对象
public Student createStudent(String name) {
    Student s = new Student();
    s.name = name;
    return s;  // 返回对象
}

// 返回数组
public int[] createArray(int size) {
    return new int[size];
}

返回值使用

直接使用返回值

Java
public int getNumber() {
    return 100;
}

// 直接使用
System.out.println(getNumber());  // 输出:100

// 作为表达式
int doubled = getNumber() * 2;  // 200

存储返回值

Java
public int add(int a, int b) {
    return a + b;
}

// 存储到变量
int sum = add(5, 3);

// 继续使用
int result = sum * 2;  // 16

作为其他方法参数

Java
public int add(int a, int b) {
    return a + b;
}

public void print(int num) {
    System.out.println(num);
}

// 返回值作为参数
print(add(5, 3));  // 输出:8

// 链式调用
int result = add(add(1, 2), add(3, 4));  // (1+2)+(3+4)=10

条件判断使用

Java
public boolean isValid(int age) {
    return age > 0 && age < 150;
}

// 用于判断
if (isValid(25)) {
    System.out.println("年龄有效");
}

返回null

返回null表示无结果

Java
public Student findStudent(String name) {
    // 查找学生
    for (Student s : students) {
        if (s.name.equals(name)) {
            return s;  // 找到返回对象
        }
    }
    return null;  // 未找到返回null
}

Student s = findStudent("张三");
if (s != null) {
    System.out.println(s.name);
}

安全使用返回值

Java
public String getName() {
    return null;  // 可能返回null
}

// 安全使用
String name = getName();
if (name != null) {
    System.out.println(name.length());  // 安全
}

// 或使用Optional(Java 8+)
Optional<String> opt = Optional.ofNullable(getName());
opt.ifPresent(n -> System.out.println(n.length()));

返回数组

返回数组示例

Java
public int[] getNumbers() {
    int[] arr = {1, 2, 3, 4, 5};
    return arr;
}

// 使用
int[] nums = getNumbers();
for (int num : nums) {
    System.out.println(num);
}

返回计算结果数组

Java
public int[] doubleArray(int[] arr) {
    int[] result = new int[arr.length];
    for (int i = 0; i < arr.length; i++) {
        result[i] = arr[i] * 2;
    }
    return result;
}

int[] nums = {1, 2, 3};
int[] doubled = doubleArray(nums);
// doubled: {2, 4, 6}

返回对象

返回新创建对象

Java
public Student createStudent(String name, int age) {
    Student s = new Student();
    s.name = name;
    s.age = age;
    return s;
}

Student stu = createStudent("张三", 25);

返回现有对象

Java
public Student getBestStudent() {
    // 返回已有对象
    return bestStudent;
}

返回对象链式调用

Java
public class Builder {
    private String name;
    
    public Builder setName(String name) {
        this.name = name;
        return this;  // 返回当前对象
    }
    
    public String getName() {
        return name;
    }
}

Builder b = new Builder().setName("张三");
String name = b.getName();  // "张三"

返回值注意事项

返回类型匹配

返回值类型必须与方法声明一致。

Java
public int getNumber() {
    // return "hello";  // 错误:类型不匹配
    return 100;  // 正确:int类型
}

public String getMessage() {
    return "hello";  // 正确:String类型
    // return 100;    // 错误:类型不匹配
}

所有路径必须返回

有返回值的方法,所有执行路径必须有return。

Java
public int getNumber(int type) {
    if (type == 1) {
        return 10;
    } else if (type == 2) {
        return 20;
    }
    // 错误:缺少其他情况的处理
    // 必须有默认return
    return 0;
}

void方法可无return

Java
public void print(String msg) {
    System.out.println(msg);
    // 无return语句,方法执行完自动返回
}

public void check(int num) {
    if (num < 0) {
        return;  // 可用return提前结束
    }
    System.out.println(num);
}

返回值设计原则

恰当的返回类型

Java
// 需要数值时返回数值
public int getSum(int[] arr) {
    int sum = 0;
    for (int num : arr) {
        sum += num;
    }
    return sum;  // 返回int
}

// 需要判断时返回boolean
public boolean isEmpty(String str) {
    return str == null || str.isEmpty();
}

// 需要结果对象时返回对象
public Result process(String input) {
    Result result = new Result();
    result.data = input.toUpperCase();
    return result;
}

明确的返回意图

Java
// 明确:返回最大值
public int findMax(int[] arr) {
    int max = arr[0];
    for (int num : arr) {
        if (num > max) max = num;
    }
    return max;
}

// 不明确:返回多种类型信息
public Object getData(int type) {
    if (type == 1) return 100;
    if (type == 2) return "hello";
    return null;  // 不推荐:返回类型不明确
}

要点总结

  • return关键字返回结果并结束方法
  • void表示无返回值
  • 返回类型可以是基本类型、引用类型、数组
  • return后方法立即结束
  • 有返回值的方法所有路径必须有return
  • void方法可无return或只写return;
  • 返回值可直接使用、存储、作为参数
  • 返回null表示无有效结果
  • 返回值类型必须与声明一致
  • 返回对象可用this支持链式调用
  • 可返回数组作为批量结果

📝 发现内容有误?点击此处直接编辑

← 上一篇 方法的定义与调用
下一篇 → 方法的重载
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库