您好,登錄后才能下訂單哦!
本篇文章為大家展示了JDK10中實現(xiàn)局部變量類型推斷var,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
Java是一種強類型, 許多流行的編程語言都已經(jīng)支持局部變量類型推斷,如js,Python,C++等
JDK10 可以使用var作為局部變量類型推斷標(biāo)識符
Local-Variable Type Inference(局部變量量類型推斷),顧名思義只能用做為局部變量
注意
僅適用于局部變量量,如 增強for循環(huán)的索引,傳統(tǒng)for循環(huán)局部變量不能使用于方法形參、構(gòu)造函數(shù)形參、方法返回類型或任何其他類型的變量量聲明標(biāo)識符var不是關(guān)鍵字,而是一個保留類型名稱,而且不支持類或接口叫var,也不符合命名規(guī)范
用jshell試驗或者IDEA
//根據(jù)推斷為 字符串串類型 var strVar = "springboot"; System.out.println(strVar instanceof String); //根據(jù)10L 推斷l(xiāng)ong 類型 var longVar = 10 L; //根據(jù) true推斷 boolean 類型 var flag = true; //var flag = Boolean.valueOf("true"); //System.out.println(flag instanceof Boolean); // 推斷 ArrayList<String> var listVar = new ArrayList < String > (); System.out.println(listVar instanceof ArrayList); // 推斷 Stream<String> var streamVar = Stream.of("aa", "bb", "cc"); System.out.println(streamVar instanceof Stream); if (flag) { System.out.println("這個是 flag 變量量,值為true"); } for (var i = 0; i < 10; i++) { System.out.println(i); } try (var input = new FileInputStream("validation.txt")) {}
附錄:下面看下局部變量類型推斷
很多人抱怨Java是一種強類型,需要引入大量的樣板代碼。甚至在這些情況下,給定好變量名,通常很清楚發(fā)生了什么,明顯類型聲明往往被認(rèn)為是不必要的。許多流行的編程語言都已經(jīng)支持某種形式的局部變量類型推斷:如C++ (auto), C# (var), Scala (var/val), Go (declaration with :=)等。
JDK10 可以使用var作為局部變量類型推斷標(biāo)識符,此符號僅適用于局部變量,增強for循環(huán)的索引,以及傳統(tǒng)for循環(huán)的本地變量;它不能使用于方法形式參數(shù),構(gòu)造函數(shù)形式參數(shù),方法返回類型,字段,catch形式參數(shù)或任何其他類型的變量聲明。
標(biāo)識符var不是關(guān)鍵字;相反,它是一個保留的類型名稱。這意味著var用作變量,方法名或則包名稱的代碼不會受到影響;但var不能作為類或則接口的名字(但這樣命名是比較罕見的,因為他違反了通常的命名約定,類和接口首字母應(yīng)該大寫)。
參考一下示例:
var str = "ABC"; //根據(jù)推斷為 字符串類型 var l = 10L;//根據(jù)10L 推斷l(xiāng)ong 類型 var flag = true;//根據(jù) true推斷 boolean 類型 var flag1 = 1;//這里會推斷boolean類型。0表示false 非0表示true var list = new ArrayList<String>(); // 推斷 ArrayList<String> var stream = list.stream(); // 推斷 Stream<String>
反編譯class文件:
String str = "ABC"; long l = 10L; boolean flag = true; int flag1 = true; ArrayList<String> list = new ArrayList(); Stream<String> stream = list.stream();
從上面示例可以看出,當(dāng)我們是用復(fù)雜的方法時,不需要特意去指定他的具體類型返回,可以使用var推斷出正確的數(shù)據(jù)類型,這在編碼中,可以大幅減少我們對方法返回值的探究。
上述內(nèi)容就是JDK10中實現(xiàn)局部變量類型推斷var,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。