更新時間:2018年10月24日16時07分 來源:傳智播客 瀏覽次數(shù):
今天開始給大家總結(jié)一下JDK1.5的新特性,雖然現(xiàn)在出到10了,但是大部分公司還是在用老的版本,面試的時候難免被問到,我?guī)痛蠹铱偨Y(jié)一下:
(1)靜態(tài)導入:
**import語句可以導入一個類或某個包中的所有類
**import static語句導入一個類中的某個靜態(tài)方法或所有靜態(tài)方法
靜態(tài)導入后,靜態(tài)方法前面就不用寫類名.方法的方式類調(diào)用
**語法舉例:
import static java.lang.Math.sin;//導入一個靜態(tài)方法
import static java.lang.Math.*; //導入一個類中的所有靜態(tài)方法
**靜態(tài)導入使用注意:
當類名重復時,需要制定具體的包名;
當方法重名時,需要制定具體所屬的對象或者類
(2)可變參數(shù):
**可變參數(shù)的特點:
*可變參數(shù)只能出現(xiàn)在參數(shù)列表的最后;
*...位于變量類型和變量名之間,前后有無空格都可以;
*調(diào)用可變參數(shù)的方法時,編譯器為該可變參數(shù)隱含創(chuàng)建一個數(shù)組,
在方法體中以數(shù)組的形式訪問可變參數(shù)。
**可變參數(shù)舉例:
*變量類型... 變量名 如 int... arr表示可變參數(shù)數(shù)組
*public static void show(String str , int... arr){}
(3)增強for循環(huán):
**語法:
for ( type 變量名:集合變量名 ) { … }
**注意事項:
迭代變量必須在( )中定義!
集合變量可以是數(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;
}
**增強for循環(huán)代替了迭代器使用的不爽,簡化書寫
**增強for循環(huán)局限性:
對集合或者數(shù)組進行遍歷時,只能取元素,不能對集合進行操作
(4)基本數(shù)據(jù)類型的自動裝箱和拆箱
**基本數(shù)據(jù)類型
byte ---> Byte
short ---> Short
int ---> Integer
long ---> Long
float ---> Float
double ---> Double
char ---> Character
boolean ---> Boolean
**例子:
**裝箱:自動把一個基本數(shù)據(jù)類型的數(shù)據(jù)裝箱成一個該類型數(shù)據(jù)的對象引用
Integer i = 3;(jdk1.5之前這樣寫是不行的,編譯報錯)
**拆箱:自動把一個基本數(shù)據(jù)類型的對象引用拆箱成一個基本數(shù)據(jù)類型的數(shù)據(jù),再參與運算
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而后面的運算返回false呢?
對于基本數(shù)據(jù)類型的整數(shù),裝箱成Integer對象時,如果該數(shù)值在一個字節(jié)內(nèi),(-128~127),
一旦裝箱成Integer對象后,就把它緩存到磁里面,當下次,又把該數(shù)值封裝成Integer對象時
會先看磁里面有沒有該對象,有就直接拿出來用,這樣就節(jié)省了內(nèi)存空間。因為比較小的整數(shù),
用的頻率比較高,就沒必要每個對象都分配一個內(nèi)存空間。
這就是享元模式!比如26個英文字母,10個阿拉伯數(shù)字
作者:傳智播客JavaEE培訓學院
首發(fā):http://java.itcast.cn/