中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JDK9新特性詳解

發布時間:2020-08-09 16:51:22 來源:ITPUB博客 閱讀:185 作者:xz43 欄目:編程語言
1、Java9新特性之目錄結構

       包含jdk8及以前的jdk版本,所有目錄結構以及目錄含義如圖:

JDK9新特性詳解 

JDK9新特性詳解

        jdk9之后,目錄結構發生變化如圖:

     JDK9新特性詳解

     這個新特性只要了解下就可以了,這個目錄結構是方便為了接下來新特性做保證

2、Java9新特性之JShell工具

       怎么理解,怎么用呢?這個只是針對于java9來說,相當于cmd工具,你可以和cmd一樣,直接寫方法等等,不過我認為只是適用于初學者做一些最簡單的運算和寫一些方法,在cmd中打開這個工具:

         JDK9新特性詳解

          進入工具后可以做一些簡單的java操作

         JDK9新特性詳解

         等等,我認為只適用于初學者學習java不用其他編輯工具就可以學習java

3、Java9新特性之模塊化

         一個大型的項目,比如淘寶商城等,都會包含多個模塊,比如訂單模塊,前臺模塊,后臺管理模塊,廣告位模塊,會員模塊.....等等,各個模塊之間會相互調用,不過這種情況下會很少,只針對特殊情況,如果一個項目有30個模塊系統進行開發,但是只要某個單獨模塊運行時,都會帶動所有的模塊,這樣對于jvm來說在內存和性能上會很低,所以,java9提供了這一個特性,某一個模塊運行的時候,jvm只會啟動和它有依賴的模塊,并不會加載所有的模塊到內存中,這樣性能大大的提高了。寫法上如下:

         JDK9新特性詳解

         一個項目中的兩個模塊,模塊之間通過module-info.java來關聯,在IDEA編輯器右鍵創建package-info.java

         JDK9新特性詳解

         在這個兩個模塊java9Demo和java9Test中,java9demo編寫一個實體類Person,在java9Test調用這樣一個過程

        這個是java9Demo 將 java9Test 模塊需要的文件導出 exports  把它所在的包導出 

module java9Demo{
    exports com.mdxl.layer_cj.entity;
}

        然后在java9Test模塊中創建一個package-info.java,引入java9Demo模塊導出包名

module java9Test{
    requires java9Demo;
}

       這樣就可以直接在java9Test中引入Person實體類了,exports 控制著那些包可以被模塊訪問,所以不被導出的包不能被其他模塊訪問。

4、Java9新特性之多版本兼容Jar包

        怎么理解呢?

       好多公司用的JDK大部分還是老版本,JDK6、7都有,他們都不敢升級主要是因為兼容的問題,但是JDK9做到了這一點,就是不管公司的項目是用的JDK6、7、8甚至5,他都可以兼容不出錯,打個比方,你之前用的是iphone5,現在出現了iPhone6,iphone7,iphon8和iphone9,但是你不敢買9,因為你自己已經適應了iphone5的所有手機的運行流程,6,7,8每個手機的運行流程不一樣,但是這個9很強大,它能夠識別你現在所用的版本iphone是5,所以當你升級到iphone9的時候,你的這個手機運行流程還是iphone5的流程,只是在原有基礎上擁有了更多的iphone9的所有優勢。

5、Java9新特性之接口Interface的升級
public interface FilterProcess<T> {
    //java 7 及以前 特性  全局常量 和抽象方法
    public static final String a ="22";
    boolean process(T t);
    //java 8 特性 靜態方法和默認方法
    default void love(){
        System.out.println("java8 特性默認方法");
    }
    static void haha(){
        System.out.println("java8 特性靜態方法");
    }
    //java 8 特性 支持私有方法
    private void java9(){}
}

6、Java9新特性之鉆石操作符的升級
//java6及以前
Map<String,String> map7 = new HashMap<String,String>();
//java7和8 <>沒有了數據類型
Map<String,String> map8 = new HashMap<>();
//java9 添加了匿名內部類的功能 后面添加了大括號{}  可以做一些細節的操作
Map<String,String> map9 = new HashMap<>(){};

7、Java9新特性之異常處理try升級

       首先看下jdk6,7,8,9 的try catch的比較

       Java6處理方式:

//java7及以前寫法  每一個流打開的時候都要關閉
@Test
public void test7(){
    InputStreamReader reader = null;
    try{
        reader = new InputStreamReader(System.in);
        reader.read();
    }catch (IOException e){
        e.printStackTrace();
    }finally {
        if (reader != null){
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

       JDK7,8 共同的處理方式:

//java7和8及 每一個流打開的時候都要關閉,但是在try的括號中來進行關閉
@Test
public void test7(){
    try(InputStreamReader reader =new InputStreamReader(System.in)){
        reader.read();
    }catch (IOException e){
        e.printStackTrace();
    }
}

       java9的處理方式:

//java9及 每一個流打開的時候都要關閉,但是在try的括號中來進行關閉,在
//java8的基礎上進一步升級 直接在try括號中直接寫入 變量就好,如果有多個流,就用分號隔開
//try(reader;writer){}
@Test
public void test7(){
    InputStreamReader reader =new InputStreamReader(System.in);
    try(reader){
        reader.read();
    }catch (IOException e){
        e.printStackTrace();
    }
}

8、Java9新特性之特殊標識符增加限制

       JDK8之前 String _ ="hello";  這樣的標識符可以用,JDK9就用不到。

9、Java9新特性之String底層存儲結構更換

       JDK8之前 String的底層結構類型都是 char[] ,但是JDK9 就替換成 byte[] 這樣來講,更節省了空間和提高了性能。

     JDK9新特性詳解

     JDK9新特性詳解

      之所以替換是因為 之前一直是最小單位是一個char,用到兩個byte,但是JDK8是基于latin1的,而這個latin1編碼可以用一個byte標識,所以當你數據明明可以用到一個byte的時候,我們用到了一個最小單位chat兩個byte,就多出了一個byte的空間。所以JDK9在這一方面進行了更新,現在的JDK9 是基于ISO/latin1/Utf-16  ,latin1和ISO用一個byte標識,UTF-16用兩個byte標識,JDK9會自動識別用哪個編碼,當數據用到1byte,就會使用iSO或者latin1 ,當空間數據滿足2byte的時候,自動使用utf-16,節省了很多空間。

     JDK9新特性詳解

       *****同理,StringBuilder StringBuffer也更換了底層數據結構*************

10、Java9新特性之Stream API 新方法的添加

       在原有Stream API 新添加了4個方法,takeWhile dropWhile ofNullable iterate(新重載方法)

       首先解釋 takeWhile 當達到一定條件就結束:輸出結果為45 43,如圖

     JDK9新特性詳解

      而 dropWhile 則和takeWhile 相反

      ofNullable, 在java8中 Stream中的元素不能完全為null,否則空指針異常,而在java9的升級中,允許創建null

      iterate 不加條件無線循環

     JDK9新特性詳解

11、Java9新特性之引進HttpClient

      以往我們都是通過maven添加httpclient ,java9直接引入即可

      Java9所有特性都是為了提高性能和內存。。。。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浠水县| 海宁市| 榆林市| 富宁县| 潍坊市| 同心县| 扬中市| 鹤庆县| 曲麻莱县| 丽水市| 韶关市| 库尔勒市| 河曲县| 太原市| 宝坻区| 来安县| 东丰县| 板桥市| 德格县| 堆龙德庆县| 庆元县| 盘锦市| 喀什市| 贵港市| 抚远县| 淳化县| 泰和县| 奎屯市| 阿拉善左旗| 宁城县| 漯河市| 黄龙县| 连山| 本溪市| 建德市| 会泽县| 赞皇县| 璧山县| 兴义市| 建水县| 天全县|