java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java中的return关键字

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(没有返回语句)

原因如下:

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在同一个{}里面的情况)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文