大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 6個重要的Java8新特性

6個重要的Java8新特性

更新時間:2022-05-10 11:29:54 來源:動力節點 瀏覽1379次

Java8新特性有哪些?動力節點小編來告訴大家。

永久代

這實際上意味著什么?

誰從未配置過他們的“ PermSize ”或“ MaxPermSize ”JVM 內存?

這通常是在收到那些丑陋的“ java.lang.OutOfMemoryError: PermGen error ”錯誤后完成的。

這現在已被稱為 Metaspace 的東西所取代。Metaspace 將根據我們在運行時對內存的需求重新調整大小。如果需要,我們仍然可以通過設置“ MaxMetaspaceSize ”參數來調整 Metaspace 的數量。

并行數組排序

我們習慣于使用“ Arrays.sort ”對數組進行排序。這使用了 Merge Sort 或 Tim Sort 進行排序算法。它們的問題是它們是按順序執行的,因此我們無法獲得多線程為我們提供的所有好處。為此,他們實現了“ Arrays.parallelSort ”。

那我們什么時候應該使用它呢?

我們不會立即獲得使用我們的 2 核或更多核處理器的直接好處。

陣列應具有一定的大小,以查看性能方面的任何提升。一些比較表明,您將需要陣列中大約 200 萬個元素才能開始看到改進。

查看這篇關于并行數組排序的帖子,了解有關基準測試和算法工作原理的更多詳細信息。

Base64編碼和解碼

不久前,我不得不在一個項目中使用 Base64 編碼和解碼,才能傳輸 JSON 格式的文件。

我最終使用了第 3 方 API(apache Base64 庫)來執行此操作。

此功能意味著我們不必四處尋找其他實現,使事情變得更容易一些。

一些基本的解碼和編碼示例

編碼

String base64 = Base64.getEncoder().encodeToString("要編碼的字符串".getBytes("utf-8"));

解碼

byte[] asBytes = Base64.getDecoder().decode("你的 base 64 字符串");

日期和時間 API

在 Java 中處理日期和時間一直很痛苦。我們從 Date 類中現在最不推薦使用的方法開始,記住星期一是表示為 0 還是 1,添加 Calendar 類來處理 timeZones 等等……

這使我們使用 Joda Time 或其他一些 API 來簡化事情。這將不再是必要的。

新的 API 與 Joda Time 非常相似,因此如果您已經熟悉它,您應該可以即時了解內容。如果您從未使用過 Joda Time,請不要擔心,它使用起來非常簡單。

一些日期和時間示例

javax.time.Clock

時鐘.systemUTC(); //您系統的當前時間(UTC)。
Clock.millis();//從 1970 年 1 月 1 日開始的毫秒數。

javax.tme.ZoneId

ZoneId zone = ZoneId.of(“Europe/London”);//來自時區的zoneId。
Clock clock = Clock.system(zone);//設置一個時鐘的區域。

javax.time.LocalDate

LocalDate date = LocalDate.now();//當前日期
String day = date.getDayOfMonth();//月份中的哪一天
String month = date.getMonthValue();//月份
String year = date.getYear();//年份

功能接口

函數式接口是精確定義一個抽象方法的接口。例如,我們有定義運行抽象方法的“ java.lang.Runnable ”:

公共抽象無效運行();

我們仍然可以添加任意數量的默認方法(非抽象)。

在定義新的功能接口時,我們必須定義新的注解“ @FunctionalInterface ”。這將允許我們阻止功能接口的錯誤使用,因為如果與新注釋一起使用不當,它將無法編譯。

Lambda 表達式

Lambda 表達式可能是 Java 8 最大和最受期待的特性。它們基本上用于將代碼而不是對象傳遞給方法或處理一組數據以執行算法。

這將產生更簡單、更易讀的代碼。讓我們看一下圍繞這個的一些概念。

內部或外部迭代

Java 中的常規方法是在外部迭代集合,所以我們會有這樣的東西:

對于(字符串值:myCollection){
		System.out.println(值);
	}

我們在這里所做的是迭代列表并一一拉取對象。如果我們可以從一開始就說我們想從集合中提取什么,那會更自然。這正是我們如何使用 lambdas 的概念:

myCollection.forEach((String value) -> System.out.println(value));

傳遞行為

這對我來說是我們真正可以在 lambda 表達式中發現潛力的地方。我們可以將行為傳遞給函數,使基本功能更加通用,并大大提高項目的可用性。

例如,如果我們想創建一個打印 List 的所有元素的方法,我們將執行以下操作:

公共無效 printAllStrings (列表列表字符串){
		for(字符串字符串對象:listString){
			System.out.println(stringObject);
		}
	}

如果我們現在只想打印長度超過 4 個字符的字符串:

公共無效 printLongerThan4Strings (列表列表字符串){
		for(字符串字符串對象:listString){
			if(stringObject.length() > 4) {
				System.out.println(stringObject);
			}	
		}
	}

在 Java 8 中,我們可以使這個過程更通用并重用我們的更多代碼。我們可以傳遞一個謂詞來進行過濾。它看起來像這樣:

公共無效 printAllStrings (列表列表字符串,謂詞p) {
		for(字符串字符串對象:listString){
			如果(p.test(stringObject)){
				System.out.println(stringObject);
			}	
		}
	}

現在我們所要做的就是在調用中傳遞謂詞:

printAllStrings(listString, s -> true);
printAllStrings(listString, s -> s.length() > 4);

清潔、快速且可重復使用。

以上就是關于“6個重要的Java8新特性”的介紹,大家如果想了解更多相關知識,不妨來關注一下動力節點的Java8新特性,里面有更豐富的知識等著大家去學習, 希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产精品久久久久桃色tv | 国产成人精品s8sp视频 | 曰本毛片 | 97精品久久天干天天蜜 | 久久精品一区 | 一级做a爱片久久毛片 | 午夜一级视频 | 动漫精品欧美一区二区三区 | 国产精品久久久久久搜索 | 欧美一区二区三区香蕉视 | 精品播放 | 精品一区二区三区中文 | 天天干天天干 | 美女一级a毛片免费观看 | 国产美女亚洲精品久久久久久 | 欧美人一级淫片a免费播放 欧美人与zoxxxx另类9 | 日日噜噜夜夜狠狠视频无 | 日本黄色小视频在线观看 | 久久久日韩精品国产成人 | 色综合久久综合欧美综合网 | 亚洲成人免费在线观看 | 欧洲a老妇女黄大片 | 中文字幕亚洲高清综合 | 69一级毛片 | 久久久久综合网久久 | 国产在线免 | 一区二区亚洲精品 | 亚洲欧美网站 | 久久久久一级片 | 日韩中文精品亚洲第三区 | 久久精品国产400部免费看 | 国产精片 | 久久久久在线观看 | 日本国产亚洲 | 精品国产亚一区二区三区 | 一级黄色录像视频 | 久久这里只有精品66 | 久久精品视频久久 | 精品一区二区三 | 青青久在线视频免费视频 | 免费观看视频成人国产 |