在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Java 23功能介紹

OSC開源社區 ? 來源:OSC開源社區 ? 2024-12-04 10:02 ? 次閱讀

Java 23 包含全新和更新的 Java 語言功能、核心 API 以及 JVM,同時適合新的 Java 開發者和高級開發者。從IntelliJ IDEA 2024.2開始已支持 Java 23 功能。

跟上 Java 新版本的發布節奏可能很難,這意味著要解決一連串的問題——更改是什么、為什么要更改以及如何使用全新和更新的功能。

在這篇博文中,我將介紹 Java 23 的一些全新和更新功能 – 它們為您解決的痛點、語法和語義,以及 IntelliJ IDEA 如何幫助您使用它們。

我將重點介紹 Java 23 功能,例如在模式匹配中包含基元數據類型、在代碼庫中導入模塊的能力、在文檔注釋中使用 Markdown 的可能性、隱式聲明的類與實例 main 方法,以及靈活的構造函數體。

如果您感興趣,請訪問此鏈接來查看 Java 23 其他功能的列表。

在深入了解 Java 23 功能的詳細信息之前,我們先快速配置 IntelliJ IDEA。

IntelliJ IDEA 配置

IntelliJ IDEA 2024.2開始已經支持 Java 23。

在您的 Project Settings(項目設置)中,將 SDK 設置為 Java 23。您可以將 IntelliJ IDEA 配置為使用下載版本的 JDK 23,也可以選擇從供應商列表中下載而無需退出 IDE。對于語言級別,選擇“23(Preview) – Primitive types in patterns, implicitly declared classes, etc.”(23(預覽) – 模式中的基元類型,隱式聲明的類等),如下面的屏幕截圖中所示:

0fc57a48-abcb-11ef-93f3-92fbcf53809c.png

要使用 Markdown 文檔注釋等正式功能,請將語言級別更改為“23 – Markdown documentation comments”(23 – Markdown 文檔注釋),如以下設置屏幕截圖中所示:

0fca6b66-abcb-11ef-93f3-92fbcf53809c.png

在掌握 IntelliJ IDEA 的配置后,我們來深入學習新功能。

模式、instanceof 和 switch 中

的基元類型(預覽功能)

想象一下,您需要編寫一個條件構造,它基于 long 變量的值是否匹配幾個字面量值或落在某個值范圍內來執行代碼。

您會怎么做?在此之前,您只能使用 if/else 構造執行此操作。但是,借助 Java 23 中的模式、instanceof 和 switch 中的基元類型(一種預覽語言功能),您可以使用更具表達性且易于閱讀的 switch 構造來編寫此功能,同時在 case 標簽中使用 long 值。

將基元類型添加到模式匹配中

意味著什么?

在 Java 23 之前,switch 構造(語句和表達式)僅能處理引用變量和一些基元數據類型,例如 int、byte、short(有約束)。此外,instanceof 運算符不能用于任何基元數據類型。

借助 Java 23,您可以將所有基元數據類型(包括 boolean、long、float 和 double)與 Switch 構造中的模式匹配和 instanceof 運算符一起使用。這適用于在嵌套和頂層上下文中使用。

為什么您應該關注此功能?一項功能的價值取決于它影響的代碼庫有多大以及使用頻率。由于條件語句是編程的基礎之一,您可以預期在代碼庫中大量使用此功能。即使您可能不會編寫代碼,您也會閱讀由其他人編寫的代碼。

我們通過一個示例來理解此功能。

一個示例(將較長的 if-else 語句

替換為 switch 表達式)

想象一個方法,例如 getHTTPCodeDesc(int),它接受 HTTP 服務器代碼作為 int 值,并返回相應的字符串表示,同時將其與某個字面量值或值范圍進行比較。

這段代碼似乎沒有明顯的問題 – 我們都編寫過或閱讀過類似的代碼。不過,處理 if-else 構造的流程可能需要更長的時間,因為它們可能定義不僅限于一個變量的復雜條件。我們簡單地假設方法 getHTTPCodeDesc() 的定義如下:

publicStringgetHTTPCodeDesc(intcode){
if(code==100){
return"Continue";
}
elseif(code==200){
return"OK";
}
elseif(code==301){
return"Movedpermanently";
}
elseif(code==302){
return"Found";
}
elseif(code==400){
return"Badrequest";
}
elseif(code==500){
return"Internalservererror";
}
elseif(code==502){
return"Badgateway";
}
elseif(code>100&&code200&&code302&&code400&&code502&&code

在 Java 23 中,可以使用 switch 表達式(使用基元作為模式)替換上述代碼,具體如下所示:

publicStringgetHTTPCodeDesc(intcode){
returnswitch(code){
case100->"Continue";
case200->"OK";
case301->"MovedPermanently";
case302->"Found";
case400->"BadRequest";
case500->"InternalServerError";
case502->"BadGateway";
caseintiwheni>100&&i"Informational";
caseintiwheni>200&&i"Successful";
caseintiwheni>302&&i"Redirection";
caseintiwheni>400&&i"ClientError";
caseintiwheni>502&&i"ServerError";
default->"Unknownerror";
};
}

上述代碼的第一個明顯好處是,相比于使用 if-else 語句的版本,它更易于閱讀和理解。您可以一目了然地理解代碼邏輯。

另一個不那么明顯的好處(但也很重要)是上述代碼如何減少您的認知負擔。認知負擔指的是您在工作記憶中擁有的信息量(工作記憶空間有限)。如果您試圖用與您的最終目標無直接關聯的指令或信息來使您的工作記憶超載,那么您的工作效率會降低。易于閱讀的代碼段可以幫助您將注意力集中到代碼的其他領域。當我們探討如何經常從中受益時,這些小的勝利會起到很大作用。

現在,我們來聊聊簡單的部分,我是指語法。正如您所注意到的,利用帶保護的 (when i > 100 && i < 200) 類型模式 (int i),帶保護的 case 標簽既可以有常量值(例如 100、200 等),也可以有使用模式匹配指定的值范圍。您也可以定義一個 default 子句。

在上述代碼中,方法 getHTTPCodeDesc() 使用 switch 表達式返回一個值。無論您傳遞給方法形參(即 code)的值如何,該方法都必須返回一個值。換句話說,switch 表達式必須為詳盡。如果不是,IntelliJ IDEA 可以檢測到并提供添加 default 子句的選項,如以下 GIF 中所示:

0fea421a-abcb-11ef-93f3-92fbcf53809c.gif

上述代碼在 int 類型的變量上進行切換。類似地,您可以在所有其他基元類型(例如 long、double、float 等)的變量上切換。

您是第一次使用模式匹配還是

首次了解 switch 構造的最近更改?

如果您對模式匹配完全不熟悉,請查看我的博文 Java 17 和 IntelliJ IDEA 中關于基礎知識的部分。如果您對如何將模式匹配與 switch 構造配合使用感興趣,我有關于此主題的另一篇詳細博文:Evolution of the Switch Construct in Java—Why Should you Care?。這篇文章介紹了 switch 構造如何使用模式匹配來檢查引用值是否符合不同模式,并根據變量的類型及其特性有條件地執行代碼。

將模式匹配與布爾值配合使用

我們經常閱讀和編寫根據 boolean 變量的值是 true 還是 false 來返回值的代碼。例如,在以下代碼中,方法 calculateDiscount 根據您傳遞給方法形參 isPremiumMember 的值是 true 還是 false 來計算并返回折扣值:

publicclassDiscountCalculator{
privatestaticfinalintPREMIUM_DISCOUNT_PERCENTAGE=20;
privatestaticfinalintREGULAR_DISCOUNT_PERCENTAGE=5;

publicintcalculateDiscount(booleanisPremiumMember,inttotalAmount){
intdiscount;
if(isPremiumMember){
//Calculatediscountforpremiummembers
discount=(totalAmount*PREMIUM_DISCOUNT_PERCENTAGE)/100;
}else{
//Calculatediscountforregularmembers
discount=(totalAmount*REGULAR_DISCOUNT_PERCENTAGE)/100;
}
returndiscount;
}
}

除了 if-else 構造外,您還可以切換布爾方法形參 isPremiumMember 的值,而無需定義局部變量 discount,具體如下所示:

publicintcalculateDiscount(booleanisPremiumMember,inttotalAmount){
returnswitch(isPremiumMember){
casetrue->(totalAmount*PREMIUM_DISCOUNT_PERCENTAGE)/100;
casefalse->(totalAmount*REGULAR_DISCOUNT_PERCENTAGE)/100;
};
}

由于方法 calculateDiscount() 中的 switch 表達式為詳盡,如果您缺少 true 或 false 值中的任何一個,IntelliJ IDEA 都可以檢測到并建議您插入默認或缺少的 true/false case,如以下 gif 中所示:

101a3588-abcb-11ef-93f3-92fbcf53809c.gif

將基元類型與 instanceof 運算符配合使用

在 Java 23 之前,任何基元類型都不能與 instanceof 運算符結合使用。

instanceof 運算符可用于檢查變量的類型,并有條件地執行代碼。利用 instanceof 的模式匹配,如果待比較變量的類型與類型模式匹配,您還可以聲明和初始化模式變量,而無需顯式轉換。instanceof 變量還可以使用保護模式。

隨著將基元類型添加到 instanceof 運算符,您可以定義如下代碼:

importstaticjava.io.IO.println;

voidmain(){
varweight=68;
if(weightinstanceofbytebyteWeight&&byteWeight<=?70)?{
????????println("Weight?less?than?70");
????}
}

請注意,Java 23 中的“隱式聲明的類與實例 main 方法”功能定義了具有 static 方法的 java.io.IO,允許您導入并使用 println() 將值輸出到控制臺,而不是使用 System.out.println() 執行此操作。

如果您計劃檢查更多的類型和條件,可以使用帶有保護的 switch 構造,具體如下所示:

varweight=68;

switch(weight){
casebytebwhenbprintln("byte:lessthan70");
caseintiwheniprintln("int:lessthan7000");
caselonglwhenl>=7_000&&lprintln("longrange:7_000-70_000");
casedoubled->println("double");
}

數據類型之間的安全轉換

當您將模式匹配與基元數據類型配合使用時,Java 編譯器確保沒有信息丟失。在以下示例中,instanceof 運算符可以在檢測到安全時在 double 和 byte 數據類型之間轉換:

doubleheight=67;

if(heightinstanceofbytebyteHeight)
System.out.println(byteHeight);

如果沒有 instanceof 運算符,類似的代碼將無法執行。以下代碼不會編譯:

doubleheight=67;

finalbyteconvertToByte=height;

IntelliJ IDEA 中的穩健數據流分析

IntelliJ IDEA 為 switch 語句中的基元類型提供了有力支持,還集成了復雜的數據流分析,可以幫助開發者避免常見問題。如以下示例中所示,IntelliJ IDEA 中的數據流分析可以確定第二個 case 標簽,即 case int _ 和其余的 case 標簽不可達(因為如果變量 weight 的值大于 70,代碼會退出方法)。IntelliJ IDEA 會就不可到達的代碼發出警告并提供適當的建議:

102ad5f0-abcb-11ef-93f3-92fbcf53809c.gif

記錄和基元數據類型組件

想象一下,您定義了如下記錄 Person:

recordPerson(Stringname,doubleweight){}

在此之前,您可以將其分解為精確的數據類型。不過,借助模式匹配中的基元類型,您可以使用其他兼容的數據類型,例如 int、long 等。示例如下:

Personperson=newPerson("Java",672);

switch(person){
casePerson(Stringname,byteweight)->println("byte:"+weight);
casePerson(Stringname,intweight)->println("int:"+weight);
casePerson(Stringname,doubleweight)->println("double:"+weight);
casePerson(Stringname,longweight)->println("long:"+weight);
default->thrownewIllegalStateException("Unexpectedvalue:"+person);
}

您也可以將它與 instanceof 運算符配合使用,具體如下所示:

if(personinstanceofPerson(Stringname,byteweight)){
System.out.println("Instanceof:"+weight);
}

IntelliJ IDEA 支持此功能的后續計劃

對模式匹配中基元數據類型的更多支持正在開發,包括能夠在所有基元數據類型上使用后綴運算符 .switch 來開始編寫 switch 構造。此外,也在開發的支持是將現有的 if-else 語句轉換為使用基元數據類型的 switch 構造 – 這可讓您更輕松地采用此新功能。

Markdown 文檔注釋

(正式功能)

在此之前,Java 文檔注釋需要使用 HTML 和 JavaDoc 標記進行編寫。借助此新功能,即文檔注釋,您還可以使用 Markdown 編寫 JavaDoc 注釋。這是 Java 23 中的一項正式功能。

您是否想知道此更改的原因是什么?

原因之一是 HTML 不再是新開發者的流行選擇(盡管在 Java 于 20 世紀 90 年代后期推出時,它是一個不錯的選擇)。手動編寫 HTML 并不簡單。此外,Markdown 更易于編寫、閱讀,并且可以輕松轉換為 HTML。許多開發者都在使用 Markdown 來記錄他們的代碼、撰寫書籍、文章、博文,以及生成網站頁面等。

讓我們看看如何在您的源代碼文件中使用 Markdown 編寫 Javadoc 注釋,以及 IntelliJ IDEA 如何提供幫助。

一個示例

Markdown 文檔注釋以 /// 開頭。

使用三個斜杠的選擇非常有趣。Oracle 中此功能的負責人 Jonathan Gibbons 分享說,更改 Java 語言中功能的語法并非易事。多行注釋以 /* 開頭,以 */ 結尾。這樣便很難在文檔中包括可能包含 */ 的任何代碼。因此,Markdown 文檔注釋以 /// 開頭。

此外,也支持編寫文檔注釋的舊方法,即 HTML 和 JavaDoc 標記。Jonathan 還提到,無法將 JavaDoc 標記轉換為 Markdown 等效標記。因此,開發者可以使用 Markdown 注釋和 JavaDoc 標記的組合,以獲得兩全其美的結果。

下面是一個使用 Markdown 和 Javadoc 標記記錄方法的示例:

///
///**GettingstartedandhavingfunlearningJava:)**
///
///Printsapatternoftheletter'P'usingthespecifiedcharacter.
///
///@paramsizethesizeofthepattern
///@paramcharToPrintthecharactertouseforthepattern
///
privatevoidprintP(intsize,charcharToPrint){
for(inti=0;i

IntelliJ IDEA 可以幫助您在編輯器中切換視圖,查看文檔注釋對任何閱讀 Java 文檔注釋的人如何顯示。

在 IntelliJ IDEA 中查看 Java 文檔注釋

JEP“Markdown 文檔注釋”的負責人 Jonathan Gibbons 強調,所有開發者都需要檢查他們添加到代碼庫中的 Java 文檔注釋是否正確。

IntelliJ IDEA 提供了“閱讀器模式”,讓您能夠在源代碼中查看 Java 文檔注釋。您還可以使用 Toggle Rendered View(切換渲染視圖)功能在 Java 文檔注釋代碼和查看方式之間切換,如以下 gif 中所示:

104fbed8-abcb-11ef-93f3-92fbcf53809c.gif

在 IntelliJ IDEA 中編寫

Markdown 文檔注釋

IntelliJ IDEA 可以檢測到您正在使用 Markdown 記錄方法。當您以 /// 開始并按 Enter 時,它也會在下一行添加 ///,如以下 GIF 中所示:

1074dc9a-abcb-11ef-93f3-92fbcf53809c.gif

您是否應該將現有的文檔注釋

轉換為使用 Markdown?

下面的 gif 顯示了在 IntelliJ IDEA 中使用 Markdown 編寫的 hashCode 方法的文檔。利用 Toggle Rendered View(切換渲染視圖),您可以輕松在閱讀器視圖中查看文檔,這更容易閱讀和理解。

1093f9fe-abcb-11ef-93f3-92fbcf53809c.gif

理想情況下,除非您的開發者或 API 用戶在使用不提供替代視圖的工具(如 IntelliJ IDEA)查看您的(API、庫、框架)代碼庫時遇到重大可讀性問題,否則我不鼓勵您將現有文檔轉換為使用 Markdown。

模塊導入聲明(預覽功能)

借助此功能,您可以在類或接口中使用單條語句導入模塊庫(如 Java API),例如 import module java.base,這條語句將導入由模塊 java.base 導出的所有軟件包。

您不需要單獨的 import 語句來導入類中的軟件包,如 java.util,或者說 java.io,因為它們由 java.base 導出。

一個示例

以下代碼示例使用了來自 java.io 和 java.util 軟件包的類。通過包含語句 ‘import java.base’,您不需要單獨導入 java.io 和 java.util 軟件包,因為它們由模塊 java.base 導出:

importmodulejava.base;
publicclassImportModuleHelloWorld{

publicstaticvoidmain(String[]args){

try{
InputStreaminputStream=newBufferedInputStream(
newFileInputStream(
newFile("abc.txt")));
}catch(FileNotFoundExceptione){
thrownewRuntimeException(e);
}

Maplist=newHashMap();
}
}

不過,如果您從頂部刪除 import module 語句,則 IntelliJ IDEA 將從 java.io 和 java.util 軟件包中導入單個類和接口。此操作在以下 GIF 中顯示:

10e478d4-abcb-11ef-93f3-92fbcf53809c.gif

哪些軟件包是由模塊 java.base

(或其他模塊)導出的?

當您使用 IntelliJ IDEA 時,回答這個問題很簡單。點擊編輯器中的模塊名稱或使用相關快捷鍵(Go to Declaration(轉到聲明) 或 Go to Usages(轉到用法)),您可以查看此模塊的定義以找出由此模塊導出的所有模塊。此操作在以下 gif 中顯示:

10f779d4-abcb-11ef-93f3-92fbcf53809c.gif

隱式聲明的類與

實例 main 方法(第三預覽版)

此功能在 Java 21 中作為預覽語言功能引入,在 Java 23 中為第三個預覽版。

它將改變新 Java 開發者學習 Java 的方式。它簡化了學生學習基礎知識(例如變量賦值、序列、條件和迭代)時的初始步驟。學生不再需要聲明顯式類來開發代碼,或使用此簽名編寫其 main() 方法 public static void main(String [])。借助此功能,可以隱式聲明類,以及使用更短的關鍵字列表創建 main() 方法。

如果您不熟悉此功能,我強烈建議閱讀詳細介紹此功能的文章 ‘HelloWorld’ and ‘main()’ meet minimalistic。在本節中,我將包括 Java 23 中對此功能的補充。

使用模塊 java.base 導出的軟件包

而不顯式導入它們

只需在隱式類的頂部包含一條 import 語句,即 import module java.base,您就能自動導入 java.base 導出的軟件包。這意味著您的隱式類將不再需要這些類或軟件包的單獨 import 語句,如以下 gif 中所示:

111a7fe2-abcb-11ef-93f3-92fbcf53809c.gif

簡化與控制臺交互的代碼的編寫

與控制臺交互 – 打印消息或使用消息是新 Java 開發者經常使用的操作之一。在此功能中,這一點得到了進一步簡化。

您的隱式聲明的類可以使用方法 println() 和 print() 將消息輸出到控制臺,并使用方法 readln() 讀取字符串消息,而無需在您的類中顯式導入它們。所有這些方法都在一個由隱式類隱式導入的新頂層類 java.io.IO 中聲明。

花點時間,看看您需要如何在常規類中顯式導入它們,如以下 GIF 中所示:

1138a436-abcb-11ef-93f3-92fbcf53809c.gif

以下 gif 顯示了當您在隱式類中使用前述相同方法時不需要顯式導入:

116b8f72-abcb-11ef-93f3-92fbcf53809c.gif

靈活的構造函數體

(第二預覽版)

這是 JDK 22 中一項功能的第二預覽版,之前稱為“super() 之前的語句”。除了功能名稱的更改外,這項功能還有一個重要變化。現在,可以在調用 super() 或 this() 之前初始化字段。

當超類從其構造函數中調用方法,而您想要在子類中重寫此方法并在此方法內部訪問子類中的字段時,這非常有用。此前,從超類構造函數中調用方法時,子類字段不會初始化。現在,可以初始化字段并防止意外。下面是展示此功能的示例代碼:

abstractclassAction{
publicAction(){
System.out.println("performing"+getText());
}
publicabstractStringgetText();
}

classDoubleActionextendsAction{
privatefinalStringtext;
privateDoubleAction(Stringtext){
this.text=text;//thisdidnotcompilebeforeJava23withpreviewfeaturesenabled.
super();
}

@OverridepublicStringgetText(){
returntext+text;
}
}

如果您不熟悉此功能,敬請閱讀詳細介紹此功能的博文 https://blog.jetbrains.com/idea/2024/02/constructor-makeover-in-java-22/,其中探討了此功能的使用原因和使用方式。

預覽功能

在這篇博文中介紹的功能中,“模式、instanceof 和 switch 中的基元類型”、“模塊導入聲明”、“隱式聲明的類和實例 main 方法”和“靈活的構造函數體”在 Java 23 中是預覽語言功能。Java 的新發布周期為六個月,新語言功能作為預覽功能發布。它們可能會在后續 Java 版本的第二個或其他預覽版中重新引入,可能有也可能沒有更改。足夠穩定后,它們就會作為標準語言功能添加到 Java 中。

預覽語言功能是完整的但不是永久的,這實際上意味著功能已經準備好供開發者使用,只是更細致的細節可能會在未來的 Java 版本中根據開發者反饋發生變化。與 API 不同,語言功能在未來不能被棄用。因此,如果您對預覽語言功能有任何反饋,請隨時在 JDK 郵件名單(需要免費注冊)中分享。

由于這些功能的運作方式,IntelliJ IDEA 僅支持當前 JDK 的預覽功能。預覽語言功能在不同 Java 版本間可能發生變化,直到它們被移除或添加為標準語言功能。使用舊版本 Java SE Platform 中的預覽語言功能的代碼可能無法在新版本上編譯或運行。

總結

在這篇博文中,我介紹了五個 Java 23 功能 – 模式、instanceof 和 switch 中的基元類型、Markdown 文檔注釋、模塊導入聲明、隱式聲明的類與實例 main 方法,以及靈活的構造函數體。

查看這些新功能,了解它們如何幫助您改進應用程序。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2967

    瀏覽量

    104748
  • 函數
    +關注

    關注

    3

    文章

    4331

    瀏覽量

    62610
  • MarkDown
    +關注

    關注

    0

    文章

    46

    瀏覽量

    273

原文標題:Java 23和IntelliJ IDEA

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Java語言的特性介紹

      Java語言的作者們編寫了具有廣泛影響的Java白皮書,里面詳細地介紹了他們的設計目標以及實現成果,還用簡短的篇幅介紹Java語言的特
    發表于 01-20 14:44

    詳細介紹Java泛型、注解、并發編程

    介紹Java泛型、注解、并發編程、數據傳輸與序列化、高效IO、容器集合、反射與類加載以及JVM重點知識線程、內存模型、JVM運行時內存、垃圾回收與算法、Java中四種引用類型、GC 分代收集算法
    發表于 08-20 06:09

    基于Java程序的功能點度量

    針對軟件項目開發中維護階段的成本和工作量難以估計的問題,提出一種基于Java 程序的功能點度量方法,并介紹從目標程序中抽取數據功能點以及事務功能
    發表于 03-21 14:40 ?12次下載

    java開發

    Java開發人員需要花費大量的時間埋頭于Java代碼中,使用各種不同的IDE(Intergrated Development Environment)來開發Java代碼,所以下面我將為大家介紹
    發表于 08-28 10:47 ?9次下載

    java如何實現打印功能

    在我們的實際工作中,經常需要實現打印功能。但由于歷史原因,Java 提供的打印功能一直都比較弱。實際上最初的 jdk 根本不支持打印,直到 jdk1.1 才引入了很輕量的打印支持。所以,在以前
    發表于 12-06 12:42 ?1.3w次閱讀
    <b class='flag-5'>java</b>如何實現打印<b class='flag-5'>功能</b>

    java比較器的使用詳細介紹

    Java中經常會涉及到對象數組的排序問題,那么就涉及到對象之間的比較問題。本文為大家介紹java比較器的使用。
    發表于 02-12 11:13 ?3416次閱讀

    Java File中renameTo的介紹和使用說明

    本文檔內容介紹了基于Java File中renameTo的介紹和使用說明及源代碼,供參考。
    發表于 03-12 16:06 ?0次下載

    java基礎——java.util.ConcurrentModificationException

    本文檔內容介紹java基礎java.util.ConcurrentModificationException,供參考
    發表于 03-13 11:31 ?2次下載

    Java也要收費了?為何23年后不再免費?

    近期,Oracle (甲骨文)公司宣布,“2019年1月之后”,如果沒有獲得Oracel公司的商業許可證,Java SE 8將不會再收到公開更新,也將無法用于“商業或生產用途”。使用了23年的Java將不再免費了,究竟怎么回事?
    的頭像 發表于 01-01 08:50 ?5864次閱讀

    Java23種設計模式詳細資料說明

    Java23種設計模式詳細資料說明。
    發表于 12-13 16:28 ?11次下載
    <b class='flag-5'>Java</b>的<b class='flag-5'>23</b>種設計模式詳細資料說明

    Java23種設計模式及詳細講解

    Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對
    發表于 07-02 08:00 ?3次下載
    <b class='flag-5'>Java</b>的<b class='flag-5'>23</b>種設計模式及詳細講解

    23java設計模式

    JAVA的設計模式經前人總結可以分為23種 設計模式根據使用類型可以分為三種: 1、創建模式: 2、結構模式: 3、行為模式:
    發表于 09-23 15:17 ?1次下載

    華納云:java web和java有什么區別java web和java有什么區別

    Java Web和Java是兩個不同的概念,它們在功能、用途和實現方式上存在一些區別,下面將詳細介紹它們之間的區別。 1. 功能和用途: –
    的頭像 發表于 07-16 13:35 ?803次閱讀
    華納云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么區別

    甲骨文發布Java 23

    全球領先的軟件開發企業甲骨文(Oracle)近日隆重宣布推出Java 23(Oracle JDK 23),這一里程碑式的更新標志著全球排名第一的編程語言和開發平臺再次邁出堅實步伐。Java
    的頭像 發表于 09-19 16:36 ?363次閱讀

    Java集合API的改進介紹

    解答這些問題。 我們將逐步學習 Java 集合類的優化過程,并按版本逐一對比分析。主要討論的焦點將包括 JDK 1.0、1.2、1.4、1.5、1.6、1.8、9、10、11 和 21 版本的 Java 集合功能
    的頭像 發表于 11-22 11:12 ?193次閱讀
    <b class='flag-5'>Java</b>集合API的改進<b class='flag-5'>介紹</b>
    主站蜘蛛池模板: 乱小说录目伦800| 性xxxxbbbb在线| 上课被同桌强行摸下面小黄文| 久久艹影院| 天天干天天干天天色| 4438x全国免费| 涩五月婷婷| 中文字幕自拍| 69xxx欧美| 日本韩国做暖暖小视频| 亚洲第一免费视频| h视频在线免费| 日本黄色大片网站| 天天操天天干天搞天天射| 午夜嘿嘿| 美日韩中文字幕| 黄网在线观看| 亚洲国产欧美精品一区二区三区| 激情六月网| good韩国理论在线三级| 五月婷花| 亚洲一区二区黄色| 亚欧精品一区二区三区| 免费看 s色| 国产香蕉一区二区精品视频| 亚洲wwwwww| 伊人网视频| 日本免费在线视频| 狠狠色丁香婷婷综合小时婷婷 | 性欧美高清短视频免费| 成人欧美一区二区三区黑人3p| 免费观看黄色网| 欧美性色黄| 国产亚洲精品美女2020久久| 四虎影院国产精品| 天天插夜夜| 亚洲美女精品| 天天透天天射| 香港三澳门三日本三级| 五月天久久婷婷| 一级毛片aaa片免费观看|