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

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

相关文章

  • Mybatis-plus和Mybatis出现版本不兼容的问题解决

    Mybatis-plus和Mybatis出现版本不兼容的问题解决

    MyBatis-Plus 与 MyBatis 之间的兼容性问题通常是由于版本不匹配引起的,本文主要介绍了Mybatis-plus和Mybatis出现版本不兼容的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • Jmeter接口登录获取参数token报错问题解决方案

    Jmeter接口登录获取参数token报错问题解决方案

    这篇文章主要介绍了Jmeter接口登录获取参数token报错问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Java Integer.ValueOf()的一些了解

    Java Integer.ValueOf()的一些了解

    这篇文章主要介绍了Java Integer.ValueOf()的一些了解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Java代码是如何被CPU狂飙起来的

    Java代码是如何被CPU狂飙起来的

    无论是刚刚入门Java的新手还是已经工作了的老司机,恐怕都不容易把Java代码如何一步步被CPU执行起来这个问题完全讲清楚。本文就带你详细了解Java代码到底是怎么运行起来的。感兴趣的同学可以参考阅读
    2023-03-03
  • 微服务SpringBoot整合Jasypt加密工具的场景分析

    微服务SpringBoot整合Jasypt加密工具的场景分析

    Jasypt是Java加密工具包,能支持对密码的哈希加密,对文本和二进制数据的对称加解密,还能集成SpringBoot项目对配置文件中的密钥进行加密存储,这篇文章主要介绍了微服务SpringBoot整合Jasypt加密工具,需要的朋友可以参考下
    2022-10-10
  • java组件fileupload文件上传demo

    java组件fileupload文件上传demo

    这篇文章主要为大家详细介绍了java组件fileupload文件上传demo ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 分享J2EE的13种核心技术

    分享J2EE的13种核心技术

    在本文中我将解释支撑J2EE的13种核心技术:JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaMail 和 JAF,对j2ee的13种核心技术感兴趣的朋友一起学习吧
    2015-11-11
  • 关于spring web-mvc衍生注解

    关于spring web-mvc衍生注解

    这篇文章主要介绍了关于spring web-mvc衍生注解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Spring boot项目redisTemplate实现轻量级消息队列的方法

    Spring boot项目redisTemplate实现轻量级消息队列的方法

    这篇文章主要给大家介绍了关于Spring boot项目redisTemplate实现轻量级消息队列的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • IDEA无法使用Git Pull的问题

    IDEA无法使用Git Pull的问题

    本文主要介绍了IDEA无法使用Git Pull的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论