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 分别对应两种结构的不可变和可变类型,大家可以自行探索。