在java中什么是返回值类型?

Python010

在java中什么是返回值类型?,第1张

Java中的return语句总是和方法有密切关系,return语句总是用在方法中,有两个作用,一个是返回方法指定类型的值(这个值总是确定的),一个是结束方法的执行(仅仅一个return语句)。\x0d\x0a \x0d\x0a在return语句的各类文章中,大多仅仅介绍了return语句用于有返回值(非void返回值)的方法中。而很少或没有介绍return语句在vodi返回值方法中的运用。\x0d\x0a \x0d\x0areturn语句用在非void返回值类型的方法中,不但能返回基本类型,还可以返回(包括用户自定义类的)对象。\x0d\x0a \x0d\x0a下面通过一个简单例子说明一下:\x0d\x0a \x0d\x0a/** \x0d\x0a* Created by IntelliJ IDEA. \x0d\x0a* User: leizhimin \x0d\x0a* Date: 2007-12-3 \x0d\x0a* Time: 8:54:28 \x0d\x0a* Java中的return语句使用总结 \x0d\x0a*/ \x0d\x0apublic class TestReturn { \x0d\x0apublic static void main(String args[]) { \x0d\x0a TestReturn t = new TestReturn()\x0d\x0at.test1()\x0d\x0at.test2()\x0d\x0a} \x0d\x0a\x0d\x0a/** \x0d\x0a * 无返回值类型的return语句测试 \x0d\x0a */ \x0d\x0apublic void test1() { \x0d\x0aSystem.out.println("---------无返回值类型的return语句测试--------")\x0d\x0afor (int i = 1i++) { \x0d\x0aif (i == 4) return\x0d\x0aSystem.out.println("i = " + i)\x0d\x0a} \x0d\x0a} \x0d\x0a\x0d\x0a/** \x0d\x0a * 有返回值类型的return语句测试 \x0d\x0a * @return String \x0d\x0a */ \x0d\x0apublic String test2(){ \x0d\x0aSystem.out.println("---------有返回值类型的return语句测试--------")\x0d\x0areturn "返回一个字符串"\x0d\x0a} \x0d\x0a} \x0d\x0a \x0d\x0a运行结果:\x0d\x0a---------无返回值类型的return语句测试-------- \x0d\x0ai = 1 \x0d\x0ai = 2 \x0d\x0ai = 3 \x0d\x0a---------有返回值类型的return语句测试-------- \x0d\x0a\x0d\x0aProcess finished with exit code 0\x0d\x0a\x0d\x0a返回语句return\x0d\x0a\x0d\x0areturn语句从当前方法中退出,返回到调用该方法的语句处, 句继续程序的执行。(有关方法的内容,我们将在第六章详细讲) 是一个方法)。返回语句有两种格式:\x0d\x0a\x0d\x0a1.return expression\x0d\x0a\x0d\x0a返回一个值给调用该方法的语句,返回值的数据类型必须? 方法声明中的返回值类型 一致。可以使用强制类型转换来使类型一致。\x0d\x0a\x0d\x0a2.return\x0d\x0a\x0d\x0a当方法说明中用void声明返回类型为空时,应使用这种格式, ?不返回任何值。\x0d\x0a\x0d\x0areturn语句通常用在一个方法体的最后,以退出该方法并返 一个值。Java中,单独的 return语句用在一个方法体的中间时,会产生编译错误,因为这时 ?有一些语句执行不到。但 可以通过把return语句嵌入某些语句(如if-else)来使程序在未执? 完方法中的所有语句时退出 ,例如:\x0d\x0a\x0d\x0aint method (int num){\x0d\x0a\x0d\x0a∥return num∥will cause compile time error\x0d\x0a\x0d\x0aif(num>0)\x0d\x0a\x0d\x0areturn num\x0d\x0a\x0d\x0a?? ∥may or may not be executed\x0d\x0a\x0d\x0a∥depending on the value of num参考资料:||

java中return的作用如下:

根据《Java编程思想:第四版》4.5节中介绍:return语句作为一个无条件的分支,无需判断条件即可发生。return语句主要有两个用途:一方面用来表示一个方法返回的值(假定没有void返回值),另一方面是指它导致该方法退出,并返回那个值。

根据方法的定义,每一个方法都有返回类型,该类型可以是基本类型,也可以是对象类型,同时每个方法都必须有个结束标志,因此,return起到了这个作用。在返回类型为void的方法里面,有个隐含的return语句,因此,在void方法里面可以省略不写。

拓展资料:

一、return语句和其他控制结束语句的区别如下:

Java中结束语句主要有四类:return,break,continue以及goto。但是goto不常用,所有此文不对此讨论。

1、return语句:是指结束该方法,继续执行方法后的语句。

2、break语句:是指在循环中直接退出循环语句(for,while,do-while,foreach),break之后的循环体里面的语句也执行。

3、continue语句:是指在循环中中断该次循环语句(for,while,do-while,foreach),本次循环体中的continue之后语句不执行,直接跳到下次循环。

二、return在try-catch-finally语句中的使用,若在 try或catch语句里面有return语句,finally语句和return语句的执行顺序问题:

1、若有finally语句,则无论如何,都会执行该语句,在try或catch中的return语句会将它的返回值压入栈内,然后执行finally语句,当finally执行完成后,若finally语句里有return语句,则执行return语句并结束。

2、若finally没有return语句,则返回被保存的栈里的return语句,再执行。然而,在压栈时候,要注意压入栈内的是什么东西,是值本身还是引用,若是引用则引用的值会改变,若是变量值,则不会改变。

   最开始说一下我使用的解决办法:Pair 和 Triple

   偶然看到这个问题,浏览量也很大,还是写一下我认为最好的办法吧,跟大家交流一下。

说一下前面的人答的方案,都可以解决问题,但是觉得不太好。您要是说 可以解决问题就行,那我无话可说。写代码如果只是为了完成任务,不考虑实现是否优雅 和咸鱼有什么区别呢。

数组明显不合适,数组适合放同一类型的数据,当然,你可以使用List<Object>,用Object 放结果,调用方需要知道Object的实际类型并做强制转换,不够优雅,差评

Map<String,Object>是一种能解决问题的做法,使用Object 来放结果也存在调用方需要知道其实际类型并做强转的问题,用key 作区分,方法调用者需要知道方法内部的key ,即使使用全局变量做key 也不够优雅

自定义对象,新建一个类,例如 public class DoubleResult<A, B>{getterallArgsConstructor}、public class TripleResult<A, B, C>{getterallArgsConstructor

} ,效果棒棒的

   接下来要说的 Pair 和Triple 就是上面第三种方案的实现。org.apache.commons.lang3.tuple.Pair,org.apache.commons.lang3.tuple.Triple 是commons-lang包里的两种元组类型。Pair<L,R>可以存两个数据,Triple<L,M,R>可以存三个,再多 那么考虑一下你的方法是否可以拆一下。

  简单说一下他们的用法吧。

Pair 初始化:

Pair.of(L left, R right)

例:Pair.of("a","b")

或:

Pair<Object,Object> pair = new Pair<Object, Object>() {

 @Override

   public Object getLeft() {

      return null

   }

   @Override

   public Object getRight() {

      return null

   }

   @Override

   public Object setValue(Object value) {

      return null

   }

}

Triple 初始化:

Triple.of(L left, M middle, R right)

或:

Triple<Object, Object, Object> triple = new Triple<Object, Object, Object>() {

      @Override

      public Object getLeft() {

         return null

      }

      @Override

      public Object getMiddle() {

         return null

      }

      @Override

      public Object getRight() {

         return null

      }

   }

Pair 获取内容:

pair.getKey()

pair.getValue()

Triple 获取内容:

triple.getLeft()

triple.getMiddle()

triple.getRight()

另外org.apache.commons.lang3.tuple 包下还有ImmutablePair、ImmutableTriple、MutablePair、MutableTriple 分别对应两种结构的不可变和可变类型,大家可以自行探索。