return 用于立即结束当前方法执行,void 方法中仅退出不返回值,非 void 方法需返回对应类型值;它终止整个方法而非仅循环,且后续语句不可达。

在 Java 中,return 关键字用于立即结束当前方法的执行,并可选择性地返回一个值(对于非 void 方法)或不返回任何值(对于 void 方法)。它不是“跳出循环”或“跳过某段代码”的工具,而是退出整个方法——一旦执行到 return,后续所有语句(包括同层的 else、finally 之后的代码等)都不会再运行。
void 方法中用 return 提前结束
当方法声明为 void,return 后不能跟表达式,仅用于提前退出:
public void checkAge(int age) {
if (age < 0) {
System.out.println("年龄不能为负数");
return; // 立即退出方法,下面的 println 不会执行
}
System.out.println("年龄有效:" + age);
}
常见用途包括:参数校验失败、状态不满足继续执行条件、处理空值等场景。
非 void 方法必须 return 值且每条路径都要覆盖
如果方法声明了返回类型(如 int、String、boolean),则每个可能的执行路径都必须有 return 语句,否则编译报错:
立即学习“Java免费学习笔记(深入)”;
public String getStatus(int score) {
if (score >= 60) {
return "及格";
}
// ❌ 缺少 else 分支的 return,编译失败!
// 正确写法之一:
// return "不及格";
}
推荐写法(显式覆盖所有分支):
- 用 if-else 完整覆盖逻辑分支
- 使用三元运算符简化单行返回:
return score >= 60 ? "及格" : "不及格"; - 避免在 if 内 return 后还写无关代码(会被编译器标记为“不可达语句”)
return 在循环和嵌套结构中的行为
return 出现在 for/while/if 内部时,终止的是整个方法,不是只跳出循环:
public int findFirstEven(int[] arr) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 0) {
return arr[i]; // 找到第一个偶数就立刻返回,方法结束
}
}
return -1; // 遍历完都没找到,返回哨兵值
}
注意:
• 不要用 return 替代 break(break 是跳出当前循环,return 是退出整个方法)
• 在 try-catch-finally 中,return 若写在 try 或 catch 里,finally 仍会执行(但不建议在 finally 里写 return,会覆盖原返回值)
常见误区提醒
-
不要在 void 方法中 return 表达式,例如
return "done";会编译错误 - return 后的代码永远不执行,IDE 通常会标灰或警告“unreachable statement”
- 构造方法中不能使用 return 返回值(构造器无返回类型),但可以写
return;提前结束(极少用) - lambda 表达式里的 return 只作用于该 lambda,不是外层方法


















