Java 中的三種循環類型
來源:Medium 閱讀這篇文章後,您將了解 Java 中循環的不同方式。 循環旨在執行一段程式碼,直到條件成立。Java 中的迴圈分為三種:- 儘管
- 邊做邊做
- 為了
While 循環
while 迴圈會重複執行,直到指定的布林條件計算結果為 true。如下圖所示,該語句將一直執行,直到條件測試傳回 true。句法
while (condition true) {
// Блок codeа
}
例子
這裡將執行 while 循環,直到 x 小於 3 時條件為真。public class WhileLoop {
static int x = 1;
public static void main(String[] args) {
while(x < 3) {
System.out.println("x = "+x);
x++;
}
}
}
結論:
do-while 循環
do-while 迴圈與 while 迴圈類似,只有一點點不同。do-while 迴圈總是在測試條件之前執行一次。句法
do {
// Блок codeа
} while(condition);
例子
在此範例中,您可以看到 do 語句或程式碼區塊總是在測試條件為 true 或 false 之前執行一次。static int x = 5;
public static void main(String[] args) {
do {
System.out.println("x = "+x);
x++;
} while(x < 3);
}
結論
for迴圈
for 迴圈與 while 和 do-while 迴圈有很大不同。在一個語句行中,我們定義初始化、條件(真或假)、增量/減量。句法
For (initialization; condition; increment/decrement) {
// Блок codeа
}
例子
public static void main(String[] args) {
for(int i = 0 ; i < 2 ; i++) {
System.out.println("i = " + i);
}
}
結論:
擴展 for 迴圈(for-each)
for 迴圈還有另一個版本,它比簡單的 for 迴圈更緊湊、更易讀。它稱為擴展 for 迴圈(或 for-each 迴圈),用於迭代集合和陣列。它可用於任何實作 Iterable 介面的物件。例子
class Main
{
public static void main(String[] args)
{
int[] A = { 1, 2, 3, 4, 5 };
for (int i: A) {
System.out.println(i);
}
}
}
結論:
JDK 19:Java 19 新功能將於 9 月推出
來源:Infoworld 以下是即將發布的 JDK 版本中將出現的新功能清單。其發布日期為 2022 年 9 月 20 日。 Java Development Kit 19 是將於 9 月發布的短期支援版本,目前已進入候選版本階段。有七個功能值得關注:結構化並行性、記錄模板、外部和記憶體 API 預覽以及對開源 Linux/RISC-V 指令集架構 (ISA) 的支援。由於 JDK 19 已凍結新功能,因此其他計劃的功能(例如泛型和值物件)將推遲到該平台的更高版本。通常,Java 的新版本每六個月發布一次。繼 6 月和 7 月兩次縮減版本之後,JDK 19 候選版本於 8 月 11 日發布。第二個候選版本預計將於 8 月 25 日發布。JDK 19 的早期版本可以從jdk.java.net/19下載。JDK 19 的功能包括:-
結構化並行性(在孵化階段)。它旨在使用結構化並發 API 簡化多執行緒程式設計。這種並行性將不同執行緒上執行的多個任務視為單一工作單元。因此,這將簡化錯誤處理和取消,並且可靠性也將提高。
-
記錄模板預覽(用於解析記錄值)。記錄模式和類型模式現在可以嵌套,提供聲明性、強大且可組合的導航和資料操作形式。新功能包括擴展模式匹配以表達更複雜的複合資料查詢,而無需更改類型模式的語法或語義。
這項創新建立在 2021 年 3 月 JDK 16 中引入的 instanceof 模式匹配的基礎上。未來的版本可能需要使用陣列範本和可變參數範本等功能來擴展記錄範本。
Post 範本是Amber 專案的一部分,該專案旨在探索和開發小型的、以效能為導向的 Java 功能。
-
外部和記憶體 API 函數的預覽版本。新版本將引入一個 API,允許 Java 程式與 Java 運行時以外的程式碼和資料進行互動。透過有效率地呼叫第三方函數(即JVM 外部的程式碼)並安全地存取外部記憶體(不由JVM 管理的記憶體),API 將允許Java 程式呼叫本機庫並處理本機數據,而不會出現Java 的缺點。本機介面 (JNI)。
外部和記憶體 API 結合了兩個早期的孵化 API:外部記憶體存取 API 和外部連結器 API。外部函數和記憶體 API 之前在 JDK 17 中孵化,並在 JDK 18 中重新孵化。
-
虛擬線程的預覽。此功能引入了輕量級線程,大大減少了編寫、維護和監視高效能並行應用程式的工作量。創新的目的是提供擴展以簡單的每個請求線程風格編寫的伺服器應用程式的能力。該功能的目標程式碼使用 java.lang Thread API 以最小的更改注入虛擬線程,並使用現有的 JDK 工具對虛擬線程進行故障排除、調試和分析。
- switch 表達式和語句的模式相符的第三次預覽。它將模式匹配擴展到 switch,這將允許針對多種模式測試表達式,每種模式都有特定的效果,因此可以簡潔、安全地表達複雜的以資料為中心的查詢。
此功能先前已在 JDK 17 和 JDK 18 中預覽過。第三個預覽版增加了改進,包括以 switch 區塊中的子句取代 protected when 模式。此外,當選擇器表達式的值為 null 時,切換模式的運行時語意現在支援舊版切換語意。
這項創新將允許模式出現在 case 標籤中,從而擴展 switch 表達式和運算符的表現力和適用性。它還將使開發人員能夠在需要時緩解對空值和 switch 的歷史仇恨,提高 switch 語句的安全性,並確保現有的 switch 語句和語句繼續編譯不變並以相同的語義執行。
-
第四次孵化載體API。它將表達向量計算,在運行時可靠地編譯成支援的處理器架構上的最佳向量指令。這將提供比同等標量計算更好的效能。使用 API 的開發人員能夠使用 HotSpot 的自動向量化器在 Java 中編寫複雜的向量演算法,但使用自訂模型可以使向量化更加可預測和可靠。Vector API 之前在 JDK 16、JDK 17 和 JDK 19 中孵化。
Vector API將擴展位元積分線性運算,包括計算位數、反轉位元順序以及壓縮和擴充位等操作。
-
Linux/RISC-V Java 連接埠將獲得多種語言工具包已經支援的硬體指令集支援。Linux/RISC-V 連接埠現在將支援 RV64GV RISC-V 配置,這是一個包含向量指令的 64 位元通用 ISA。
該連接埠還將支援以下 HotSpot 虛擬機器選項:模板解釋器、C1 JIT 編譯器(客戶端)、C2 JIT 編譯器(伺服器)以及所有目前主要的垃圾收集器,包括 ZGC 和 Shenandoah。
GO TO FULL VERSION