<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          這可能是【Java10】新特性中,最流行和最有用的了!!!

          共 2716字,需瀏覽 6分鐘

           ·

          2021-06-13 03:40


          慶哥

          讀完需要

          7
          分鐘

          速讀僅需 3 分鐘

          在今年的 9 月份就要發(fā)布 Java 歷史以來第三個長期支持版本 Java 17 了,不知道你作何感想……

          我知道大家目前對待 JDK 的態(tài)度是這樣的:

          新版任你發(fā),我就用 Java8!


          但是我今天要和大家分享的是 Java 10 中新添加的一個特性,而且這個特性我覺得是大家非常有必要了解和學(xué)習(xí)的一個特性,以至于大家可以把 Java 8 升級到 Java 11,當(dāng)然,是在我們平常的學(xué)習(xí)當(dāng)中!

          / var 初體驗 /

          是什么呢?我們先來看段代碼:

          public class HelloWorld {    public static void main(String[] args) {        String s = "慶哥java";        System.out.println(s);    }}

          這段代碼太簡單了,其實重點是以下這個:

          public class HelloWorld {    public static void main(String[] args) {        var s = "慶哥java";        System.out.println(s);    }}

          怎么樣,是不是不一樣了呢?你可能會說,這不行吧,的確,我目前的編譯環(huán)境是 java8,自然不行:

          我現(xiàn)在將其切換到 java10:

          這個時候代碼無誤,正常編譯打印:

          我們還可以這樣:

            var s = "慶哥java";  var i = 10;
          String s1 = "慶哥java"; int i1 = 10;


          注意下區(qū)別!也就是說在 java 10 中新添加的這個特性 var,其實準(zhǔn)確來說這并不是一個關(guān)鍵字,這個特性之前在 java9 中就已經(jīng)出現(xiàn),但是后來又給刪除了,咱也不知道為啥,咱也不敢問!


          有了這個 var,正如你所看到的那樣,我們可以直接使用這個 var 來聲明變量,而不用管你到底是 String 還是 int,咋樣,是不是感覺很方便,這樣一來,我們編碼的效率是不是會大大提高了嘞!

          / 局部變量類型推斷 /

          說起來,這個特性叫做局部變量推斷,我們看這行代碼:

           String s1 = "慶哥java";

          你如果你要聲明一個字符串類型,那就需要先使用 String 去聲明,同理如果你想聲明一個整型變量,那就得使用 int 去聲明,這看起來很正確,但是實際編碼中卻感到麻煩,因為你需要寫各種不同的變量聲明,一定程度是不是增加了代碼的難度和復(fù)雜度!

          那些不學(xué) java 的可能會說,使用 python 或者 js 可以一分鐘搞定的事情,要是用 Java 來做可能得 10 分鐘,我覺得這個鍋,要用各種不同變量聲明這種特性要背一點!

          作為一門長久不衰的高級語言,java 應(yīng)該很智能的才對,當(dāng)我寫出“慶哥 java”你就應(yīng)該知道我這個聲明的是個字符串變量,而不用很呆板的在前面加上個 String 類型你才知道是字符串變量,同理,像整型 int 也該如此!

          這個其實就是局部變量類型推斷,根據(jù)具體的數(shù)值變量推斷出其變量類型,而且這個功能在其他語言上早就有了!

          想必學(xué)過 js 的看到這個 var 應(yīng)該很熟悉吧,js 中早就在用這個 var 了,詳細(xì)點來說,這種局部變量推斷在其他語言上早已應(yīng)用,具體為:

          1. js 中的 let 和 var

          2. Scala 和 kotlin 中的 var 和 val

          3. C++中的 auto

          4. C#中的 var 通過使用:=運算符聲明來支持

          而 java,為啥沒有,這不應(yīng)該啊,一句扎心的話,在 java10 之前啊,我們的大 java 是唯一沒有局部變量類型推斷或者支持 var 關(guān)鍵字的語言!

          想想就覺得,真的不應(yīng)該!

          / java 中對類型推斷的支持 /

          這里有個知識點,在 java 中,其實也是對類型推斷這塊做了努力的,在 java8 中引入了 lambda 表達式,方法引用和 Stream 等都是對類型推斷做了很大改進,說實話,這幾塊自己還是需要花時間好好研究研究!

          雖然上述說的對類型推斷做了改進,但是你還是得機械的呆板的加上正確的類型來聲明局部變量!

          我這里一直在強調(diào)局部變量,你看這個:

          懂我意思了吧!要不然人家咋叫做局部變量類型推斷呢!

          回到上面所說的,java 好像對局部變量類型推斷不怎么感冒啊,可是,沒關(guān)系,現(xiàn)在 java10 的到來,終結(jié)了這一尷尬現(xiàn)象,咱們的 java 也有 var 了!

          / var 使代碼變得簡潔 /

          先來個栗子:

          public static void main(String[] args) {        var str = "慶哥java";  //自動推斷str的類型為String        var list = new ArrayList<String>();  //自動推斷出ArrayList<String>    }

          有沒有發(fā)現(xiàn),使用 var 之后代碼變得更加簡潔了,我們以上面這個 list 為例,加入我們不適用 var 的話是不是需要這樣書寫:

          ArrayList<String> strings = new ArrayList<String>();

          但是使用 var 使用,我們可以直接省略前面的 ArrayList,這是不是就是減少了重復(fù)使得你的代碼更加的簡潔呢?

          / 關(guān)于 var 使用的一些注意事項 /

          我們可以看到,var 的使用還是比較簡單的,但是在使用它的時候依然有一些事情需要我們特別注意,一不小心,你可能就搞錯了!

          正如上面給大家所展示的那樣,我們使用 var 可以自動幫我們進行局部變量類型的推斷,這里你需要知道的是,這個局部變量的類型是由編譯器幫我們推斷的!

          我們一直在說局部變量類型推斷,因此,這個 var 只能用于聲明局部變量,比如方法內(nèi)部,初始化代碼塊上以及 for 循環(huán)中聲明的局部變量!

          要記住,你是不能使用它來聲明成員變量或者字段的,這點要注意,請記住,人家是“局部變量類型推斷!”

          我們看似 var 是一個關(guān)鍵字,但是實際上它并不是一個關(guān)鍵字,而是一個保留的類型名稱,這一點也是需要大家注意的!

          好了,本篇文章給大家簡單介紹了 java10 中的新特性,話說,你喜歡這個 var 嗎?


          瀏覽 42
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品无码一区二区三区四区久久久 | 前后夹击人妻3p绿帽 | 91精品国产乱码久久久福利 | 一级毛片黄色 | 人人看AV|