簡談Java中的return
有位學習Java的朋友,問我return到底有什麼意義,return只不過返回一個值,除此之外他還有其他存在的意義嗎?
當然,我在剛剛學習 Java的時候也有類似的想法,這主要是因為剛開始學習Java語言,通常是以寫main方法的內容來熟悉Java的語法和程式語言的基本的思維方式。另 一個原因是剛開始學習程式語言,程式碼量很小,也很難突出return存在的意義,所以return僅僅是一個Java中不可缺少的概念。
寫Java的方法 如果不是void那就一定有return,這就像漢字一定要由各種各樣的偏旁不受組成一樣,只需為什麼這樣,根本就不需要考慮。當初我剛開始接觸Java 的時候,想法就是如此簡單。
但是,隨著讀寫程式碼的量不斷增加,特別是參加工作之後,接觸到實際業務中運用的程式程式碼,我發現,return雖然很簡單,而且的確是簡單到只是返回一個值,但是作用卻是超出想象的。甚至在很多情況下,靈活的運用return可以讓工作變得很輕鬆。
下面舉幾個例子,參考下面的程式碼:
1.首先來看3-6行程式碼 這是最簡單的應用,剛開始學Java的時候基本上都從這裡開始,也是基礎中的基礎。
其中,第5行的寫法多種多樣,
很多人喜歡類似於如下的寫法:
這種寫法雖然沒有語法錯誤,但是大多數情況下我無法找到建立變數c的理由,他除了耗費記憶體與滿足某些人的喜好之外我不知道他還有其他別的什麼用處,所以我更喜歡return 1+2;的寫法。
如果你開始嘗試讀JDK的程式碼,你會發現,SUN也比較鍾情“return 1+2;”這種coding的方式。
2.另一個應用 當一個方法中宣告瞭return,那麼也就意味著這個方法的執行結束。
看程式碼的14行你會發現,當被帶入的文字串的格式不是數字的時候,那麼其後的處理b + a也就沒有執行的意義,當知道a為無效值得一瞬間,結束方法的運算可能是效率最高的方法。
當然,結束方法執行的方式有很多,除了return之外,你也可以用Exception處理。 但是當你不想把方法的執行結果拋入Exception,但是又想在中途結束方法,return可能是最好的選擇。
這 裡特別強調的是,如果14行以後的處理非常冗長,當知道a為無效之後不直接採取return等直接結束方法處理,那麼可能唯一的辦法就是把一段冗長的處理 新增到一個大的if{....}裡面,這不僅降低了程式碼的可讀性,也讓本可以很容易看懂的程式碼變得醜陋,還會加重自己工作負擔。
3.我新增了什麼?
當你開啟Map的API你會發現,新增指定值得方法put(K key, V value)的返回值是被新增的V。 也就是說,return另一種作用就是,當你建立一個向類中新增某種目標的方法,並且想要告訴呼叫方法的部分新增了什麼的時候,可以利用return返回一個被新增了的目標。反之,如果新增失敗,返回一個null,呼叫方法的部分就很容易知道操作失敗還是成功。 當然,你也可以return一個布林型來告訴呼叫方操作結果,這一點可以參考List中add類的使用方法。
轉貼請註明出處:http://blog.csdn.net/froole
相關文章
- js中return、return true、return false的區別JSFalse
- java 的 return 是指標Java指標
- 談談 Java 中的那些“瑣”事Java
- SpringMVC中@RequestMapping註解中的return “redirect:/“;跟return““的用法。SpringMVCAPP
- java基礎(四):談談java中的IO流Java
- python中return的用法Python
- [轉載] Java中如何在方法中return返回多個值Java
- java exception and finally returnJavaException
- 淺談java中的反射Java反射
- 淺談Java中的HashmapJavaHashMap
- Python中return self的用法Python
- php中return語句的使用PHP
- java基礎(五):談談java中的多執行緒Java執行緒
- 淺談 Java 中 this 的使用(轉)Java
- 關於Java中try-catch-finally-return的執行順序Java
- Java面試題:請談談Java中的volatile關鍵字?Java面試題
- java中的finally詳解(finally中沒有return i,卻有i=XX)Java
- 從一個簡單的Java單例示例談談併發Java單例
- JavaScript return語句簡單介紹JavaScript
- 淺談Java中的內部類Java
- 淺談java中的併發控制Java
- Java中的Set, List, Map漫談Java
- 談談Java常用類庫中的設計模式 - Part ⅠJava設計模式
- C++中的return和exit區別C++
- ruby中proc和lambda的return區別
- 解析php中die(),exit(),return的區別PHP
- java中異常處理finally和return語句的執行順序Java
- 頂級實用乾貨——談談Java中的volatileJava
- await、return 和 return await 的陷阱AI
- 淺談java8中的流的使用Java
- C#中yield return用法分析C#
- 遞迴中Return例項分析遞迴
- java中的編碼簡介Java
- jquery中return,break,continue的用法總結jQuery
- [轉] 由表單中 onsubmit="return false;" 想到的MITFalse
- JVM系列之:再談java中的safepointJVMJava
- 【碼藝雜談】Java中的相同與不同Java
- 淺談java中extends與implements的區別Java