java中的return关键字使用解读
作者:SSS4362
这篇文章主要介绍了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在同一个{}里面的情况)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。