乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      jdk1.5新特性

       我是書迷705 2015-04-22

      "JDK1.5"的一個重要主題就是通過新增一些特性來簡化開發(fā),這些特性包括泛型,for-each 循環(huán),自動裝包/拆包,枚舉,可變參數(shù), 靜態(tài)導(dǎo)入 。使用這些特性有助于我們編寫更加清晰,精悍,安全的代碼。

      自動裝箱/拆箱(Autoboxing/unboxing)

      自動裝箱:基本類型自動轉(zhuǎn)換為包裝類

      自動拆包:包裝類自動轉(zhuǎn)換為基本類型

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      package com.linjunlong.fun.jdk15;

       

      import java.util.ArrayList;

       

       

      /**

       * 功能:自動裝箱/拆箱

       * 編譯器自動進行基本類型和對應(yīng)的包裝類型進行轉(zhuǎn)換

       * byte      <-->   Byte

       * short     <-->   Short

       * int       <-->   Integer

       * long      <-->   Long

       * float     <-->   Float

       * double    <-->   Double

       * char      <-->   Character

       * boolean   <-->   Boolean

       

       * @author linjunlong.com

       */

      public class AutoBoxingOrUnBoxing {

           

          /**

           * 這里我們以Integer為實例

           */

          public void jdk14() {

              //jdk1.4,初始話一個值類型對應(yīng)的包裝類,你需要這么寫

              Integer integer = new Integer(1);

              int i = integer.intValue();

              //如果你需要在數(shù)組中添加一個數(shù)值類型的話,你還需要把他轉(zhuǎn)成基礎(chǔ)類型

              new ArrayList().add(new Integer(i));

          }

           

          public void jdk15() {

              //jdk1.5中你可以這么寫; int --> Integer

              Integer integer = 1;

              // Integer --> int

              int  i = integer;

              //這里你可以直接添加數(shù)值類型

              new ArrayList().add(i);

          }

           

          public static void main(String[] args) {

              /*

               * 這里有一些有趣的特性,享元模式,

               * 經(jīng)過裝箱和解箱的對象只要大小在-128127之間(byte類型的范圍之間)

               * 都會在jvm內(nèi)存的對象緩存池里形成記錄,下次有裝箱和解箱行為的對象,

               * 都會直接指向這個緩存次里的對象

               */

               

              Integer num1 = 20;

              int num2 = new Integer(20);

              System.out.println( num1 == num2); //@answer1

              Integer int1 = new Integer(20);

              Integer int2 = new Integer(20);

              System.out.println( int1 == int2); //@answer2

              System.out.println(num1 == int1); //@answer3

              System.out.println(num1 == int1*1);//@answer4

               

               

              //->answer1:true num1num2都經(jīng)過了裝箱和解箱,都指向緩存池里的對象20

              //->answer2:false int1int2 沒經(jīng)過裝箱和解箱,2個是不同的對象,比較他們的引用地址肯定也不一樣

              //->ansewr3:false 一個在的引用地址指向緩存池,一個是指向?qū)ο?span lang="EN-US">[20]的引用地址2個也不相等

              //->answer4:true 后面int1經(jīng)過了解箱然后*1運算,然后又裝箱成Integer類型,所以他的引用地址也是緩存池里的地址

          }

       

      }

      靜態(tài)導(dǎo)入(Static Imports)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      package com.linjunlong.fun.jdk15;

       

      import static java.lang.Integer.*; //導(dǎo)入了Integer的所有靜態(tài)方法和靜態(tài)屬性

      import static java.lang.Math.max;  //導(dǎo)入了Mathmax方法

       

      /**

       * 功能:靜態(tài)導(dǎo)入

       * 你可以導(dǎo)入一些靜態(tài)方法和屬性來當(dāng)作類本身的方法和屬性一樣調(diào)用

       *

       * @author linjunlong.com

       */

      public class StaticImports {

           

          /**

           * 這里我們以Integer的對象和方法為例

           */

          public void jdk14() {

              //jdk1.4中你基本上只能這么寫

              Math.max(Integer.MAX_VALUE, Integer.MIN_VALUE);

              Integer.parseInt("12");

          }

           

          public void jdk15() {

              //jdk1.5中你只要導(dǎo)入了相應(yīng)的對象和方法你就可以直接寫了

              max(MAX_VALUE, MIN_VALUE);

              parseInt("12");

          }

           

      }

      For-Each循環(huán)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      package com.linjunlong.fun.jdk15;

       

       

      /**

       * 功能:ForEach循環(huán)

       *

       * @author linjunlong.com

       */

      public class ForEach {

           

          /**

           * 例如在jdk1.4中,我們需要遍歷一個數(shù)組,或集合,用for循環(huán)的話,我們基本只能這么寫

           */

          public static void jdk14(String[] strs) {

              for(int i = 0,max = strs==null?0:strs.length

                      ; i < max ; i ++) {

                  System.out.print(strs[i]);

              }

          }

           

          public static void jdk15(String[] strs) {

              //jdk1.5中我們可以

              for(String s : strs) {

                  System.out.print(s);

              }

          }

           

          public static void main(String[] args) {

              String[] strs = {"a","b","c"};

              ForEach.jdk14(strs);//abc

              ForEach.jdk15(strs);//abc

          }

           

      }

      可變長參數(shù)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      package com.linjunlong.fun.jdk15;

       

       

      /**

       * 功能:可變長參數(shù)

       * 1、方法的參數(shù)是可以變長的

       * 2、可變長參數(shù)一定要是方法的最后一個參數(shù)

       *

       * @author linjunlong.com

       */

      public class VariableArguments {

           

          /**

           * 例如在jdk14中,如果需要傳一堆字符串

           * 這么寫

           */

          public static void jdk14(String[] strs) {

              for(int i = 0,max = strs==null?0:strs.length

                      ; i < max ; i ++) {

                  System.out.print(strs[i]);

              }

          }

           

          /**

           * jdk1.5中,我們可以這么寫,注意String后面的3個點...

           * @param strs

           */

          public static void jdk15(String... strs) {

              for(int i = 0,max = strs==null?0:strs.length

                      ; i < max ; i ++) {

                  System.out.print(strs[i]);

              }

          }

           

          public static void main(String[] args) {

              String[] strs = {"a","b","c"};

              VariableArguments.jdk14(strs);//abc

              VariableArguments.jdk15(strs);//abc

              //jdk15還可以

              VariableArguments.jdk15("a","b","c");//abc

          }

           

      }

      枚舉

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      package com.linjunlong.fun.jdk15;

       

       

      /**

       * 功能:枚舉

       * 枚舉類型,jdk1.5加入了一個新的關(guān)鍵字enmu,我們可以這樣來定義一個枚舉類型。

       *

       * @author linjunlong.com

       */

      public class Enums {

           

          //這里用了靜態(tài)內(nèi)部類,只是為了方便寫例子

          public static enum Colors {

              Red,

              White,

              Blue

          }

           

          public static void main(String[] args) {

              //我們可以這樣使用枚舉

              Enums.Colors myColors = Enums.Colors.Red;

              System.out.println(myColors);

              for(Enums.Colors c : Enums.Colors.values()) {

                  System.out.println(c);

              }

          }

      }

      泛型

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      package com.linjunlong.fun.jdk15;

       

      import java.util.ArrayList;

      import java.util.Date;

      import java.util.List;

       

      /**

       * 功能:泛型

       * C++通過模板技術(shù)可以指定集合的元素類型,

       * Java1.5之前一直沒有相對應(yīng)的功能。

       * 一個集合可以放任何類型的對象,

       * 相應(yīng)地從集合里面拿對象的時候我們也不得不對他們進行強制得類型轉(zhuǎn)換。

       * 猛虎引入了泛型,它允許指定集合里元素的類型,

       * 這樣你可以得到強類型在編譯時刻進行類型檢查的好處。

       *

       * @author linjunlong.com

       */

      public class Generic {

           

          public static void jdk14(){

              //相當(dāng)于15中的List<Object> list = new ArrayList<Object>();

              List list = new ArrayList();

              list.add("1");//我們現(xiàn)在在list中添加了一個字符串類型

              String s = (String)list.get(0);//需要強轉(zhuǎn)

              list.add(new Date());//我們還可以添加一個Date類型

          }

           

          public static void jdk15(){

              List<String> list = new ArrayList<String>();

              list.add("1");

              String s = list.get(0);//不需要強轉(zhuǎn)

              //list.add(new Date());//編譯不通過

          }

      }

       


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多