方法的返回值
方法的返回值是方法执行后输出的结果。
返回值概念
什么是返回值
返回值是方法执行完成后返回给调用者的结果。
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支持链式调用
- 可返回数组作为批量结果
📝 发现内容有误?点击此处直接编辑