日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java7 –回顾

發布時間:2023/12/3 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java7 –回顾 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我開始寫博客文章,介紹即將發布的Java8版本中的新增功能 ,并認為我將從快速回顧一下Java7帶給我們的內容開始。

Java7于2011年7月發布,被描述為“更具進化性而非革命性”。

“有一些重大的改進,但是并沒有真正令人驚嘆或突破性的功能。” – Oracle首席Java架構師Mark Reinhold

例如,它不包含被大肆宣傳的lambda表達式。 盡管如此,它確實為Java語言帶來了許多其他巧妙的補充。 您可以在http://docs.oracle.com/javase/7/docs/上找到更多內容,或者繼續閱讀我的摘要。

Java7的重點包括:

  • 項目硬幣
    • 開關中的弦
    • 資源試一試
    • 多發球和更精確的重新拋出
    • 鉆石操作員
    • 二進制整數文字
    • 數字文字下劃線
  • 新的輸入/輸出功能
  • Fork&Join /并發實用程序

項目幣

項目代幣是“零錢”的雙關語,包含一些次要但有用的功能,包括:

開關中的弦

在Java 7之前的版本中,switch語句適用于原始類型或枚舉類型。 Java 7引入了我們可以在Switch語句中使用的另一種類型: String類型。 假設我們有一個根據字符串狀態字段處理交易的要求。 到目前為止,我們以前都是通過使用if-else語句來實現的。

private void processTrade_UsingIfs(Trade t) {String status = t.getStatus();if (status.equalsIgnoreCase("New")) {setupNewTrade(t);} else if (status.equalsIgnoreCase("Execute")) {executeTrade(t);} else if (status.equalsIgnoreCase("Pending")) {processTrade(t);}}

在Java7中,我們可以使用switch語句執行相同的操作:

public void processTrade_UsingSwitch(Trade t) {String status = t.getStatus();switch (status) {case "New":setupNewTrade(t);break;case "Execute":executeTrade(t);break;case "Pending":processTrade(t);break;default:break;}}

嘗試語句中的自動資源管理

現在,您可以在try塊中聲明一個將自動關閉的資源。 例如以前必須要做的事:

public void oldTry() {FileReader fileReader = null;BufferedReader inputStream = null;try {fileReader = new FileReader("java7.txt");inputStream = new BufferedReader(fileReader);String line = inputStream.readLine();System.out.println(line);} catch (IOException e) {//typically log or rethrow} finally {//all resources need to be manually closedtry {fileReader.close();inputStream.close();} catch (IOException e) {//typically ignore}}}

但是,現在在Java 7中,try-with-resources語句可確保在語句末尾關閉每個資源。

public void newTry() {try (FileReader fileReader = new FileReader("java7.txt");BufferedReader inputStream = new BufferedReader(fileReader)) {String line = inputStream.readLine();System.out.println(line); } catch (IOException e) {//typically log or rethrow}//no finally block to close resources required}

資源的聲明出現在try關鍵字之后的括號內。

任何實現java.lang.AutoCloseable的對象(包括所有實現java.io.Closeable的對象)都可以用作資源。 無論try語句正常完成還是突然完成,資源都將關閉

多發球和更精確的重新拋出

多抓

public void oldMultiCatch() {try {methodThatThrowsThreeExceptions();} catch (ExceptionOne e) {// log and deal with ExceptionOne} catch (ExceptionTwo e) {// log and deal with ExceptionTwo} catch (ExceptionThree e) {// log and deal with ExceptionThree}}public void newMultiCatch() {try {methodThatThrowsThreeExceptions();} catch (ExceptionOne | ExceptionTwo | ExceptionThree e) {// log and deal with all Exceptions}}public void newMultiMultiCatch() {try {methodThatThrowsThreeExceptions();} catch (ExceptionOne e) {// log and deal with ExceptionOne} catch (ExceptionTwo | ExceptionThree e) {// log and deal with ExceptionTwo and ExceptionThree}}

更精確的重新拋出

Java SE 7編譯器對重新拋出的異常執行更精確的分析,使您可以在方法聲明的throws子句中指定比在方法主體的catch / throws中使用的更特定的異常類型。

以前,我們必須做這樣的事情:

static class FirstException extends Exception { }static class SecondException extends Exception { }public void rethrowException_PreJava7(String exceptionName) throws Exception {try {if (exceptionName.equals("First")) {throw new FirstException();} else {throw new SecondException();}} catch (Exception e) {throw e;}}

注意我們如何在throws子句中聲明更通用的Exception。 在Java7中,我們可以將其更改為:

public void rethrowException_PostJava7(String exceptionName) throws FirstException, SecondException {try {if (exceptionName.equals("First")) {throw new FirstException();} else {throw new SecondException();}} catch (Exception e) {throw e;}}

鉆石操作員

Diamond運算符簡化了涉及泛型的構造函數調用。 假設您要創建一個字符串ID映射來交易對象。 原來的方法是:

Map<String, Trade> trades = new TreeMap<String, Trade>();

但是右側似乎有點多余。 編譯器可以通過查看左側的聲明來推斷類型嗎? 在Java7中可以,代碼變為:

Map<String, Trade> trades = new TreeMap<>();

這是一個不錯的但次要的方便–使用Guava庫已經可以很好地處理它。 例如:

Map<String, Trade> trades = Maps.newTreeMap();

二進制整數文字

如果您在代碼中處理二進制文件,則很有用。 例如,您現在可以執行以下操作:

int three = 0b101;

請注意0??b(或0B)前綴,以將數字標識為二進制文字。

允許在數字文字中使用下劃線

我也不認為這個意義太大,但是在某些情況下可能有用。 例如:

long creditCardNumber = 1234_5678_9012_3456L;

Fork&Join /并發實用程序(JSR 166)

Fork / Join框架專注于使用計算機中可用的所有處理資源來提高應用程序的性能。 它是為可以遞歸分解為較小部分的工作而設計的(“分而治之”算法)。

摘要:

  • Fork / Join框架:允許更輕松的Java并行編程
  • 針對多處理器系統(當今幾乎所有硬件)

在以下情況下使用:

  • 一批工作可以分解為較小的遞歸調用。
  • 還使用工作竊取算法,其中無工作的線程可以從其他繁忙的線程中竊取可用工作

道格·李(Doug Lea)撰寫:

  • oswego軟件包的創建者(成為java.util.concurrent)
  • 實踐中Java并發的貢獻者

歷史簡介

Java 1.4及更低版本:開發并發類非常困難-提供的低級并發原語( synchronized , volatile , wait() , notify()和notifyAll() )難以正確使用,并且使用這些功能的錯誤難以實現檢測和調試

Java 5:包括新的并發實用程序包

任務計劃框架– Executor框架

執行人:執行已提交的對象Runnable任務。

ExecutorService:一種Executor ,提供提供產生Future方法,該Future表示(尚未完成)異步計算的結果。

Java 7:ForkJoinPool:一種新型的ExecutorService, which使您可以更輕松地分解要同時執行的處理,并遞歸executes ForkJoinTasks:類似于線程的實體,其重量比普通線程輕得多。 大量的任務和子任務可能由ForkJoinPool中的少量實際線程托管。

新的ForkJoinPool采用分而治之算法。

偽代碼(摘自Doug Lea關于該主題的論文):

Result doWork(Work work) {if (work is small) {process the work}else {split up workinvoke framework to solve both parts} }

摘要

  • 很高興看到Java在并發空間中的持續發展以我們在Java 5中獲得的所有好處為基礎
  • 該框架的潛在用途是有限的,并且需要一個相當狹窄的問題范圍。

新的輸入/輸出功能

Java7引入了一個新的文件I / O庫,以增強平臺獨立性并增加對元數據和符號鏈接的支持。 新軟件包是java.nio.file和java.nio.file.attribute。 主要的新類是:

  • 路徑 :“文件系統中路徑的程序表示”。 這可能是開發人員最常使用的新類(接口)。 路徑引用的文件不需要存在。 出于所有實際目的,您可以考慮用java替換java.io.File。 路徑 它包括各種可用于獲取有關路徑的信息的方法,包括創建,轉換和比較路徑。
  • Files :Files類為文件相關的操作提供了大量的靜態方法,例如讀取,寫入和操作文件和目錄。 Files方法對Path對象的實例起作用。

而已! Java7給我們的總結。 請參閱我的下一篇博客文章,以回顧Java8中即將推出的一些功能。

參考: Java7 – Shaun Abram博客博客中我們的JCG合作伙伴 Shaun Abram的回顧 。

翻譯自: https://www.javacodegeeks.com/2013/10/java7-a-look-back.html

總結

以上是生活随笔為你收集整理的Java7 –回顾的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 九九热在线观看 | 青草青在线 | 四虎国产精品免费 | 涩涩97| 国产免费视频一区二区三区 | a∨色狠狠一区二区三区 | 久久伊人五月天 | 黄色网址进入 | 国产91在线观看 | 四虎影视大全 | 色综合免费 | 狠狠撸狠狠干 | 成人综合区| 亚洲免费不卡视频 | 色吊丝av中文字幕 | 久久人人超碰 | 亚洲国产伊人 | 精品一区二区三区免费看 | 99精品一区二区三区无码吞精 | av先锋在线 | 国产伦精品一区二区三区高清版禁 | 五月天婷婷久久 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 免费中文av | www.999av| 99爱国产| 欧美一级艳片视频免费观看 | 免费av大全 | 毛片网站在线看 | 亚洲小视频网站 | 超碰在线观看免费版 | 国产香蕉精品视频 | 在线1区 | 欧美一级无毛 | 欧美做受高潮中文字幕 | 亚洲自拍在线观看 | 少妇被躁爽到高潮无码人狍大战 | 日本人妻伦在线中文字幕 | 中文无码熟妇人妻av在线 | 欧美一区二区三区免费 | 波多野结衣成人在线 | 特黄a级片| 日韩字幕 | 成人欧美精品一区二区 | 亚洲欧洲日本国产 | 99热这里只有精品66 | 中字幕视频在线永久在线观看免费 | 亚洲成人av免费观看 | 久久精品亚洲 | 精品久久久久久久久久久久久久久久久久 | 人人玩人人干 | 杏导航aⅴ福利网站 | 精品人妻av一区二区三区 | 激情三区 | 国产精品男人的天堂 | 日本视频在线看 | 欧美性猛交xxxx免费看久久久 | 91久久伊人 | 中文av资源 | 中文字幕免费高 | 香蕉av一区二区 | 狠狠操在线 | 99热9| 亚洲国产中文字幕在线观看 | 中文字幕人妻一区二区三区视频 | 日韩精品久久久久久久电影99爱 | 精品一区二区三区四区五区六区 | 久久视精品 | 天堂av资源在线 | 欧美一区二区三区免 | 日韩av在线网 | 国产xxxxx在线观看 | 日本五十肥熟交尾 | 神马午夜伦理影院 | 三区在线视频 | 日本在线不卡一区二区三区 | 深爱激情av | 欧美特黄 | 精品无码一区二区三区在线 | 久久新 | 亚洲综合网址 | 日本xxxx裸体xxxx | 北条麻妃久久 | 国产传媒一区二区三区 | 久九九| 欧洲亚洲自拍 | 动漫涩涩免费网站在线看 | 日韩黄| 成人免费在线播放视频 | 国产一区二区激情视频 | 久久鲁鲁 | www国产亚洲精品久久网站 | 成人精品一区二区三区在线 | 日韩av高清无码 | 欧美a久久 | 久久蜜桃av一区二区天堂 | 黄色片子免费看 | 中文字幕在线免费视频 | 日韩精品三级 |