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

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

6個重要的Java8新特性

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

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

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 男人都懂的网站 | 国产精品合集一区二区 | 久久国产成人精品麻豆 | 狠狠干中文字幕 | 男人在线影院 | 五月伊人网 | 操日韩| 欧美日比 | 极品福利在线 | 热99re久久精品这里都是免费 | 日韩在线欧美高清一区 | 国产精品乱码免费一区二区 | 日韩亚洲精品不卡在线 | 最新狠狠色狠狠色综合 | 精品免费久久久久久久 | 成人国产亚洲欧美成人综合网 | 夜夜橹 | 99热久久这里只有精品99 | 日日操天天| 岛国大片免费在线观看 | 中文字幕最新在线 | 久久免费手机视频 | 免费国产高清精品一区在线 | 免费国产成人高清在线观看麻豆 | 国产一区二区三区不卡观 | 好吊色青青青国产欧美日韩 | 日韩视频久久 | 国产成人a毛片 | 富二代啪啪精品网站 | 欧美日韩综合精品一区二区三区 | 中国大陆一级毛片 免费 | 天天操天天爱天天干 | 天堂网一区二区 | 可以看美女隐私的网站 | 日本高清视频www夜色资源 | 污网站视频在线观看 | 日韩高清在线二区 | 久久刺激 | 九九精品免视看国产成人 | 久久这里有精品 | 免费在线观看福利 |