大战熟女丰满人妻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新特性,里面有更豐富的知識等著大家去學習, 希望對大家能夠有所幫助。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 四虎永久免费网站免费观看 | 性生活免费视频网站 | 奇米影音777 | 久操青青 | 五月国产综合视频在线观看 | 成年人香蕉视频 | 日韩一区二区三区免费 | 久久是免费只精品热在线 | 国内精品视频免费观看 | a级毛片视频| 欧美激情一区二区三级高清视频 | 精品久久香蕉国产线看观看亚洲 | 日韩欧美视频在线一区二区 | 精品久久久久久国产91 | 波多野结衣一区二区 | 99热这里只有精品免费 | 精品国产区一区二区三区在线观看 | 欧美在线综合 | 午夜时刻免费实验区观看 | 伊人久久狼人 | 精品久久久久久综合日本 | 久久五月婷 | 91亚洲成人 | 在线欧美日韩国产 | 亚洲一区二区视频 | 国产一级毛片欧美视频 | 久久国产国内精品对话对白 | 97影院理论片手机在线观看 | 视频一区久久 | 国产精品第二页 | 免费国内精品久久久久影院 | 免费观看大片bbb | 国产成人乱码一区二区三区在线 | 日本中文在线观看 | 波多野结衣国产一区二区三区 | 伊人久久99亚洲精品久久频 | 精品国产精品国产 | 日本一级毛片视频网站 | 91精品刘玥在线播放 | 亚洲国产二区三区久久 | 日本久久高清视频 |