<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-124  評(píng)論-49  文章-56  trackbacks-0

    Java 7已經(jīng)完成的7大新功能:
          1 對(duì)集合類的語(yǔ)言支持;
          2 自動(dòng)資源管理;
          3 改進(jìn)的通用實(shí)例創(chuàng)建類型推斷;
          4 數(shù)字字面量下劃線支持;
          5 switch中使用string;
          6 二進(jìn)制字面量;
          7 簡(jiǎn)化可變參數(shù)方法調(diào)用。

          下面我們來(lái)仔細(xì)看一下這7大新功能:
          1 對(duì)集合類的語(yǔ)言支持
          Java將包含對(duì)創(chuàng)建集合類的第一類語(yǔ)言支持。這意味著集合類的創(chuàng)建可以像Ruby和Perl那樣了。
          原本需要這樣:
             List<String> list = new ArrayList<String>();
             list.add("item");
             String item = list.get(0);
      
             Set<String> set = new HashSet<String>();
             set.add("item");
             Map<String, Integer> map = new HashMap<String, Integer>();
             map.put("key", 1);
             int value = map.get("key");

          現(xiàn)在你可以這樣:
             List<String> list = ["item"];
             String item = list[0];
            
             Set<String> set = {"item"};
            
             Map<String, Integer> map = {"key" : 1};
             int value = map["key"];

          這些集合是不可變的。

      
          2 自動(dòng)資源管理
          Java中某些資源是需要手動(dòng)關(guān)閉的,如InputStream,Writes,Sockets,Sql classes等。這個(gè)新的語(yǔ)言特性允許try語(yǔ)句本身申請(qǐng)更多的資源,
       這些資源作用于try代碼塊,并自動(dòng)關(guān)閉。
          這個(gè):
             BufferedReader br = new BufferedReader(new FileReader(path));
             try {
             return br.readLine();
                   } finally {
                       br.close();
             }

          變成了這個(gè):
              try (BufferedReader br = new BufferedReader(new FileReader(path)) {
                 return br.readLine();
              }
       
          你可以定義關(guān)閉多個(gè)資源:
             try (
                 InputStream in = new FileInputStream(src);
                 OutputStream out = new FileOutputStream(dest))
             {
             // code
             }
          為了支持這個(gè)行為,所有可關(guān)閉的類將被修改為可以實(shí)現(xiàn)一個(gè)Closable(可關(guān)閉的)接口。
      

          3 增強(qiáng)的對(duì)通用實(shí)例創(chuàng)建(diamond)的類型推斷
          類型推斷是一個(gè)特殊的煩惱,下面的代碼:
             Map<String, List<String>> anagrams = new HashMap<String, List<String>>();

          通過(guò)類型推斷后變成:
             Map<String, List<String>> anagrams = new HashMap<>();
          這個(gè)<>被叫做diamond(鉆石)運(yùn)算符,這個(gè)運(yùn)算符從引用的聲明中推斷類型。

      
          4 數(shù)字字面量下劃線支持
          很長(zhǎng)的數(shù)字可讀性不好,在Java 7中可以使用下劃線分隔長(zhǎng)int以及l(fā)ong了,如:
             int one_million = 1_000_000;
       運(yùn)算時(shí)先去除下劃線,如:1_1 * 10 = 110,120 – 1_0 = 110
      

          5 switch中使用string
          以前你在switch中只能使用number或enum。現(xiàn)在你可以使用string了:
             String s = ...
             switch(s) {
             case "quux":
                  processQuux(s);
         // fall-through
             case "foo":
       case "bar":
                  processFooOrBar(s);
         break;
             case "baz":
            processBaz(s);
                  // fall-through
       default:
                  processDefault(s);
                break;
      }

      
          6 二進(jìn)制字面量
          由于繼承C語(yǔ)言,Java代碼在傳統(tǒng)上迫使程序員只能使用十進(jìn)制,八進(jìn)制或十六進(jìn)制來(lái)表示數(shù)(numbers)。
          由于很少的域是以bit導(dǎo)向的,這種限制可能導(dǎo)致錯(cuò)誤。你現(xiàn)在可以使用0b前綴創(chuàng)建二進(jìn)制字面量:
             int binary = 0b1001_1001;
       現(xiàn)在,你可以使用二進(jìn)制字面量這種表示方式,并且使用非常簡(jiǎn)短的代碼,可將二進(jìn)制字符轉(zhuǎn)換為數(shù)據(jù)類型,如在byte或short。
       byte aByte = (byte)0b001;   
       short aShort = (short)0b010;   

      
          7 簡(jiǎn)化的可變參數(shù)調(diào)用
          當(dāng)程序員試圖使用一個(gè)不可具體化的可變參數(shù)并調(diào)用一個(gè)*varargs* (可變)方法時(shí),編輯器會(huì)生成一個(gè)“非安全操作”的警告。
       JDK 7將警告從call轉(zhuǎn)移到了方法聲明(methord declaration)的過(guò)程中。這樣API設(shè)計(jì)者就可以使用vararg,因?yàn)榫娴臄?shù)量大大減少了。

    posted on 2011-03-18 15:21 junly 閱讀(16865) 評(píng)論(9)  編輯  收藏 所屬分類: java

    評(píng)論:
    # re: Java 7七大新功能預(yù)覽 2011-03-19 11:42 | lhzq
    有了這七大功能,以后好用很多!  回復(fù)  更多評(píng)論
      
    # re: Java 7七大新功能預(yù)覽 2011-03-21 09:31 | HiMagic!
    1&5是最需要的  回復(fù)  更多評(píng)論
      
    # re: Java 7七大新功能預(yù)覽[未登錄](méi) 2011-03-21 10:39 | pizzazz
    # re: Java 7七大新功能預(yù)覽 2011-03-21 14:07 | Drity Monkey
    5,7不錯(cuò)  回復(fù)  更多評(píng)論
      
    # re: Java 7七大新功能預(yù)覽 2011-04-07 17:44 | 王垠
    3 增強(qiáng)的對(duì)通用實(shí)例創(chuàng)建(diamond)的類型推斷

    這一條新功能比較搞笑。在我看來(lái),該省略的類型應(yīng)該是在左邊,而不是右邊。我為Python實(shí)現(xiàn)了類型推斷系統(tǒng),經(jīng)驗(yàn)證明,唯一需要類型標(biāo)記的地方是函數(shù)的參數(shù)。
      回復(fù)  更多評(píng)論
      
    # re: Java 7七大新功能預(yù)覽 2012-09-16 13:42 | 小豬
    List<String> list = ["item"];
    String item = list[0];

    Set<String> set = {"item"};

    Map<String, Integer> map = {"key" : 1};
    int value = map["key"];

    請(qǐng)問(wèn)一下專家...以前都是輸入單筆資料..那麼多筆資料要如何做?  回復(fù)  更多評(píng)論
      
    # re: Java 7七大新功能預(yù)覽 2014-04-02 20:52 | fa
    專家,Map<String, Integer> map = {"key" : 1}; 這個(gè)能編譯通過(guò)嗎?  回復(fù)  更多評(píng)論
      
    # re: Java 7七大新功能預(yù)覽 2014-04-02 21:05 | fa
    “對(duì)集合類的語(yǔ)言支持” 那只是建議,并沒(méi)有加入到 java7 的版本里。  回復(fù)  更多評(píng)論
      
    # re: Java 7七大新功能預(yù)覽[未登錄](méi) 2014-10-13 10:08 | xxx
    shit@fa
      回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 免费毛片a在线观看67194| 国产精品自在自线免费观看| 亚洲乱码日产精品a级毛片久久| 亚洲av无码成人精品区| 亚洲国产成人精品无码一区二区| 亚洲高清免费视频| 香蕉视频在线观看免费国产婷婷 | 国产精品无码免费专区午夜| 五月婷婷综合免费| 亚洲av无码专区国产乱码在线观看| 亚洲av成本人无码网站| 亚洲三级高清免费| 亚洲av日韩av无码黑人| 国产精品美女久久久免费| 日韩免费高清视频| 亚洲成人免费在线观看| 精品视频一区二区三区免费| 亚洲视频在线一区二区| 亚洲AV日韩AV无码污污网站| 国内精品乱码卡1卡2卡3免费| 亚洲国产综合专区电影在线| 国产免费伦精品一区二区三区| 国产精品成人免费综合| 亚洲五月综合网色九月色| 91成人在线免费视频| 亚洲处破女AV日韩精品| 久久九九免费高清视频| 亚洲国产天堂久久综合| 含羞草国产亚洲精品岁国产精品| 无码人妻久久一区二区三区免费丨| 久久亚洲日韩看片无码| 久久国产精品一区免费下载| 亚洲日韩欧洲乱码AV夜夜摸| 成年免费a级毛片| 亚洲 小说区 图片区 都市| 最新亚洲人成无码网www电影| 免费的一级片网站| 在线观看亚洲AV日韩A∨| 中文字幕无码不卡免费视频| 亚洲午夜久久久久久尤物| 亚洲免费在线视频观看|