教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

jdk1.5的新特性(上)

更新時(shí)間:2018年10月24日16時(shí)07分 來源:傳智播客 瀏覽次數(shù):

  今天開始給大家總結(jié)一下JDK1.5的新特性,雖然現(xiàn)在出到10了,但是大部分公司還是在用老的版本,面試的時(shí)候難免被問到,我?guī)痛蠹铱偨Y(jié)一下:

  (1)靜態(tài)導(dǎo)入:

  **import語句可以導(dǎo)入一個(gè)類或某個(gè)包中的所有類

  **import static語句導(dǎo)入一個(gè)類中的某個(gè)靜態(tài)方法或所有靜態(tài)方法

  靜態(tài)導(dǎo)入后,靜態(tài)方法前面就不用寫類名.方法的方式類調(diào)用

  **語法舉例:

  import static java.lang.Math.sin;//導(dǎo)入一個(gè)靜態(tài)方法

  import static java.lang.Math.*; //導(dǎo)入一個(gè)類中的所有靜態(tài)方法

  **靜態(tài)導(dǎo)入使用注意:

  當(dāng)類名重復(fù)時(shí),需要制定具體的包名;

  當(dāng)方法重名時(shí),需要制定具體所屬的對(duì)象或者類

  (2)可變參數(shù):

  **可變參數(shù)的特點(diǎn):

  *可變參數(shù)只能出現(xiàn)在參數(shù)列表的最后;

  *...位于變量類型和變量名之間,前后有無空格都可以;

  *調(diào)用可變參數(shù)的方法時(shí),編譯器為該可變參數(shù)隱含創(chuàng)建一個(gè)數(shù)組,

  在方法體中以數(shù)組的形式訪問可變參數(shù)。

  **可變參數(shù)舉例:

  *變量類型... 變量名 如 int... arr表示可變參數(shù)數(shù)組

  *public static void show(String str , int... arr){}

  (3)增強(qiáng)for循環(huán):

  **語法:

  for ( type 變量名:集合變量名 ) { … }

  **注意事項(xiàng):

  迭代變量必須在( )中定義!

  集合變量可以是數(shù)組或?qū)崿F(xiàn)了Iterable接口的集合類

  **舉例:

  public static int add(int x,int ...args) {

  int sum = x;

  for(int arg:args) {

  sum += arg;

  }

  return sum;

  }

  **增強(qiáng)for循環(huán)代替了迭代器使用的不爽,簡(jiǎn)化書寫

  **增強(qiáng)for循環(huán)局限性:

  對(duì)集合或者數(shù)組進(jìn)行遍歷時(shí),只能取元素,不能對(duì)集合進(jìn)行操作

  (4)基本數(shù)據(jù)類型的自動(dòng)裝箱和拆箱

  **基本數(shù)據(jù)類型

  byte ---> Byte

  short ---> Short

  int ---> Integer

  long ---> Long

  float ---> Float

  double ---> Double

  char ---> Character

  boolean ---> Boolean

  **例子:

  **裝箱:自動(dòng)把一個(gè)基本數(shù)據(jù)類型的數(shù)據(jù)裝箱成一個(gè)該類型數(shù)據(jù)的對(duì)象引用

  Integer i = 3;(jdk1.5之前這樣寫是不行的,編譯報(bào)錯(cuò))

  **拆箱:自動(dòng)把一個(gè)基本數(shù)據(jù)類型的對(duì)象引用拆箱成一個(gè)基本數(shù)據(jù)類型的數(shù)據(jù),再參與運(yùn)算

  Integer i = 12;

  sop(i+4);

  **享元模式:

  Integer num1 = 12;

  Integer num2 = 12;

  System.out.println(num1 == num2);//打印true

  Integer num5 = Integer.valueOf(12);

  Integer num6 = Integer.valueOf(12);

  System.out.println(num5 == num6);//打印true

  Integer num3 = 129;

  Integer num4 = 129;

  System.out.println(num3 == num4);//打印false

  為什么前面的返回true而后面的運(yùn)算返回false呢?

  對(duì)于基本數(shù)據(jù)類型的整數(shù),裝箱成Integer對(duì)象時(shí),如果該數(shù)值在一個(gè)字節(jié)內(nèi),(-128~127),

  一旦裝箱成Integer對(duì)象后,就把它緩存到磁里面,當(dāng)下次,又把該數(shù)值封裝成Integer對(duì)象時(shí)

  會(huì)先看磁里面有沒有該對(duì)象,有就直接拿出來用,這樣就節(jié)省了內(nèi)存空間。因?yàn)楸容^小的整數(shù),

  用的頻率比較高,就沒必要每個(gè)對(duì)象都分配一個(gè)內(nèi)存空間。

  這就是享元模式!比如26個(gè)英文字母,10個(gè)阿拉伯?dāng)?shù)字



作者:傳智播客JavaEE培訓(xùn)學(xué)院
首發(fā):http://java.itcast.cn/

0 分享到:
和我們?cè)诰€交談!