Java中return的用法

有位学习Java的朋友,问我return到底有什么意义,return只不过返回一个值,除此之外他还有其他存在的意义吗?
当然,我在刚刚学习 Java的时候也有类似的想法,这主要是因为刚开始学习Java语言,通常是以写main方法的内容来熟悉Java的语法和程序语言的基本的思维方式,另 一个原因是刚开始学习程序语言,代码量很小,也很难突出return存在的意义,所以return仅仅是一个Java中不可缺少的概念。写Java的方法 如果不是void那就一定有return,这就像汉字一定要由各种各样的偏旁不受组成一样,只需为什么这样,根本就不需要考虑。当初我刚开始接触Java 的时候,想法就是如此简单。

但是,随着读写代码的量不断增加,特别是参加工作之后,接触到实际业务中运用的程序代码,我发现,return虽然很简单,而且的确是简单到只是返回一个值,但是作用却是超出想象的。甚至在很多情况下,灵活的运用return可以让工作变得很轻松。
下面举几个例子,参考下面的代码:

1 public class Foo{
2 private String str;
3
4 public int foo(){
5 return 1+2; 6 }
7 public int foo(String a){
8 if(a == null){
9 throw new NullPointerException();
10 }
11 int b = 0;
12 try{
13 b = Integer.parseInt(a);
14 }catch(NumberFormatException e){
15 return b;
16 }
17 return b + 3;
18 }
19 public String addValue(String str){
20 if(str == null){
21 return null;
22 }
23 this.str = str;
24 return str;
25 }
26 }





1.首先来看3-6行代码
这是最简单的应用,刚开始学Java的时候基本上都从这里开始,也是基础中的基础。
其中,第5行的写法多种多样,很多人喜欢类似于如下的写法:
public int foo(){
int c = 1+2;
return c;
}
这种写法虽然没有语法错误,但是大多数情况下我无法找到建立变量c的理由,他除了耗费内存与满足某些人的喜好之外我不知道他还有其他别的什么用处,所以我更喜欢return 1+2;的写法。
如果你开始尝试读JDK的代码,你会发现,SUN也比较钟情“return 1+2;”这种coding的方式。


2.另一个应用
当一个方法中宣部了return,那么也就意味着这个方法的执行结束。
看代码的15行你会发现,当被带入的文字串的格式不是数字的时候,那么其后的处理b + a也就没有执行的意义,当知道a为无效值得一瞬间,结束方法的运算可能是效率最高的方法。
当然,结束方法运行的方式有很多,除了return之外,你也可以用Exception处理。
但是当你不想把方法的执行结果抛入Exception,但是又想在中途结束方法,return可能是最好的选择。
这 里特别强调的是,如果15行以后的处理非常冗长,当知道a为无效之后不直接采取return等直接结束方法处理,那么可能唯一的办法就是把一段冗长的处理 添加到一个大的if{....}里面,这不仅降低了代码的可读性,也让本可以很容易看懂的代码变得丑陋,还会加重自己工作负担。


3.我添加了什么?
当你打开Map的API你会发现,添加指定值得方法put(K key, V value)的返回值是被添加的V。
也就是说,return另一种作用就是,当你建立一个向类中添加某种目标的方法,并且想要告诉调用方法的部分添加了什么的时候,可以利用return返回一个被添加了的目标,反之,如果添加失败,返回一个null,调用方法的部分就很容易知道操作失败还是成功。
当然,你也可以return一个布尔型来告诉调用方操作结果,这一点可以参考List中add类的使用方法。
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/java/javajs/200865/122130.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值