java中的return关键字使用解读

 更新时间:2023年08月01日 15:53:20   作者: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在同一个{}里面的情况)

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

相关文章

  • 如何通过自定义spring invalidator注解校验数据合法性

    如何通过自定义spring invalidator注解校验数据合法性

    这篇文章主要介绍了如何通过自定义spring invalidator注解校验数据合法性,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • java适配器模式之万物拟人化

    java适配器模式之万物拟人化

    本文详细介绍了什么是适配器模式,适配器模式的种类以及各种类的详细讲解等,需要学习该知识点的小伙伴可以参考这篇文章
    2021-08-08
  • 基于SpringBoot实现自动装配返回属性的设计思路

    基于SpringBoot实现自动装配返回属性的设计思路

    这篇文章主要介绍了基于SpringBoot实现自动装配返回属性,这里涉及到的技术知识点有注解解析器,为什么用ResponseBodyAdvice这里解析?不在Filter,Interceptors,本文结合示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-03-03
  • Java结构型设计模式之享元模式示例详解

    Java结构型设计模式之享元模式示例详解

    享元模式(FlyWeight Pattern),也叫蝇量模式,运用共享技术,有效的支持大量细粒度的对象,享元模式就是池技术的重要实现方式。本文将通过示例详细讲解享元模式,感兴趣的可以了解一下
    2022-09-09
  • idea使用Mybatis逆向工程插件详情

    idea使用Mybatis逆向工程插件详情

    这篇文章主要介绍了idea使用Mybatis逆向工程插件详情,首先使用mybatis连接数据库接着添加连接的mysql的信息,测试链接等过程,更多过程了解请参考下面文章的详细内容
    2022-01-01
  • Java中自定义异常详解及实例代码

    Java中自定义异常详解及实例代码

    这篇文章主要介绍了Java中自定义异常详解及实例代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • Java文件目录下载并打包成ZIP压缩包

    Java文件目录下载并打包成ZIP压缩包

    这篇文章主要介绍了在Java中如何实现文件夹、文件目录的递归下载并打包成ZIP压缩包,文中的示例代码讲解详细,有需要的可以参考下
    2024-10-10
  • Feign调用传输文件异常的解决

    Feign调用传输文件异常的解决

    这篇文章主要介绍了Feign调用传输文件异常的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • JDK输入命令Javac报错的解决方法

    JDK输入命令Javac报错的解决方法

    相信很多人都经历过配置环境变量失败的经历,尤其是很多时候明明按照老师教的步骤或者教程上的方法循规守矩配置却还是出错,下面我们来解决一个非常蹊跷的问题---输入Java和Java -version都没问题,但是输入Javac报错,感兴趣的朋友一起看看吧
    2023-11-11
  • 解决Nacos成功启动但是无法访问 (Connection refused)

    解决Nacos成功启动但是无法访问 (Connection refused)

    这篇文章主要介绍了解决Nacos成功启动但是无法访问 (Connection refused)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06

最新评论