解析java中的return关键字
本文解析java中的return关键字,讲了它的一些用法以及一些常见问题及其应对方案
·
解析java中的return关键字
return的作用
a.返回方法的返回值(运行结果)
具体表现: 返回不被void关键字修饰的方法的返回值
语法: return 返回值;
注意:返回值类型需要与方法名前面的数据类型保持一致
示例代码如下:
import java.util.Scanner;
public class Practice {
public static void main(String[] args) {
int year=2020;
if(isLeapYear(year)){
System.out.println(year+"是闰年");
}else{
System.out.println(year+"是平年");
}
}
//在isLeapYear是返回实参传过来的年是否是闰年的结果,若是,则返回true,否则返回false
public static boolean isLeapYear(int year){
if(year%400==0||(year%4==0&&year%100!=0)){
return true;
}
return false;
}
}
示例代码截图如下所示:
b.结束当前方法
语法为: return;
必须要在方法体里头书写才会生效
示例代码如下所示:
public class Practice {
public static void main(String[] args) {
//当输入第10句坚持就是胜利时,就结束这个程序
// 此时我们可以在main方法里面使用return关键字
int i=0;
while(true){
System.out.println("坚持就是胜利"+(++i));
if(i==10){
System.out.println("此时程序结束!!!");
return;
}
}
}
}
示例代码截图如下所示
return关键字常见问题
编译器如何判定非void修饰的方法的返回值是否合理???
1.核心判断依据
任意情况下该方法都有返回值,
2.例如如下所示代码是会运行成功,还是会报错呢?
public class Practice {
public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
boolean flag=true;
if(flag){
return 1;
}
}
}
解答:在idea中编译通过不了,提示Missing return statement(没有返回语句)
原因如下:
编译器不知道flag的值,也就是说if语句在编译器眼中是可能运行也可能不运行
也就是说可能会有返回值,可能也没有返回值。
因此不符合任何条件下都有返回值这个要求,因此就会提示没有返回语句
3.那么如何解决这个问题呢?
3.1 第一种,{}里面(循环、分支啥的)的内容用变量去进行接收,然后返回变量的值
语法
public static 变量数据类型 test(){
变量数据类型 变量名=默认值;
boolean flag=true;
if(flag){
变量名=特定值;
}
return 变量名;
}
对之前的错误代码进行改进的结果如下所示:
public class Practice {
public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
int result=55;
//定义一个变量来接收返回的结果
boolean flag=true;
if(flag){
result=100;
}
return result;
}
}
3.2 第二种,{}里面和外面都有返回值
public static 变量数据类型 test(){
boolean flag=true;
if(flag){
return 数值1;
}
return 数值2;
//数值1和数值2的数据类型应与变量数据类型保持一致
}
对之前的错误代码进行改进的结果如下所示:
public class Practice {
public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
//if里面外面均有返回值,此时编译器就不用担心有可能无返回值的情况了
boolean flag=true;
if(flag){
return 100;
}
return 55;
}
}
return后面是否可以写其他语句???
分析
当return的作用为返回方法的运行结果时
以下代码是否会报错?
public class Practice {
public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
return 66;
System.out.println("查看是否报错");
}
}
//此题会报错
答:会报错,因为按照正常来说当return所在语句运行完成后,意味着该次方法调用语句完成,而return后面的语句压根就没有执行的可能。因此在编译器编译的过程中,会报错,报错提示你应该把不可访问(多余)的语句给去掉。
当return的作用为结束当前方法时
以下代码是否会报错
public class Practice {
public static void main(String[] args) {
System.out.println("专注能有效提高做事效率!!!");
return;
System.out.println("科学表明");
}
}
答:会报错,因为按照正常来说使用return关键字结束当前方法后,意味着该方法(紧邻着的)后面的语句不可能有机会去运行,因此编译器会给出错误提示Unreachable statement(不可访问的语句),因此此时return后面也不能写其他语句。
总结
无论是返回方法的运行结果还是结束当前方法,后面均不可以写其他语句
return所在语句后面不可以写其他语句。(其他语句和return在同一个{}里面的情况)
更多推荐
所有评论(0)