java新特性(自1.5開始)
java1.5
java 1.5 被稱為跨時(shí)代的更新
- 引入泛型炊邦;
- 增強(qiáng)循環(huán)孩擂,可以使用迭代方式(也稱foreach語句)狼渊;
- 自動裝箱與自動拆箱;
- 枚舉类垦;
- 可變參數(shù)囤锉;
- 靜態(tài)導(dǎo)入;
- 元數(shù)據(jù)护锤;
- Instrumentation。
詳解:
泛型
泛型之前已經(jīng)整理過了酿傍,傳送門增強(qiáng)for循環(huán)
格式:for(ElementType element:arrayName){};
ElementType可以是數(shù)組或者實(shí)現(xiàn)了Iterable接口的集合類烙懦, 使用增強(qiáng)for循環(huán)的時(shí)候會忽略角標(biāo)信息,所以在需要角標(biāo)的時(shí)候最好還是使用傳統(tǒng)的方式赤炒。
public class Demo {
public static void main(String[] args) {
int[] ints = {1, 2, 4, 7, 8};
String showInts = "[ ";
for (int i : ints){
showInts += i + " ";
}
showInts += "]";
System.out.println(showInts);
}
/*
結(jié)果: [ 1 2 4 7 8 ]
*/ }
- 自動裝箱與自動裝箱
java為了效率氯析,定義了8中基本數(shù)據(jù)類型: byte short int long
char float double boolean 但是他們不是對象,沒有指定的方法莺褒,所以他們有對應(yīng)的封裝類掩缓,而且內(nèi)部定義了一些方法(定義泛型的時(shí)候用到基本數(shù)據(jù)類型的時(shí)候只能用其封裝類)
基本數(shù)據(jù)類型 ------------------- 封裝類
byte -------------------- Byte
short -------------------- Short
int -------------------- Integer
long -------------------- Long
char -------------------- Character
float -------------------- Float
double -------------------- Double
boolean -------------------- Boolean
Integer intNum = 13; //自動裝箱
int intNum2 = new Integer(13);//自動拆箱
//你可能會覺得沒什么作用 但是在之前必須手動裝箱拆箱
Integer intNum3 = new Integer(13); //手動裝箱
int intNum4 = intNum3.intValue();//手動拆箱
//就問你惡心不惡心 多麻煩
- 枚舉
枚舉:一些方法在運(yùn)行時(shí),它需要的數(shù)據(jù)不能是任意的遵岩,而必須是一定范圍內(nèi)的值你辣,可以直接使用枚舉予以解決。
枚舉類的定義格式:
enum 類名{
//枚舉值
}
有些方法在運(yùn)行時(shí)尘执,它需要的數(shù)據(jù)不能是任意的舍哄,而必須是一定范圍內(nèi)的
值,有了枚舉之后可以直接使用枚舉解決。比如: 方向 , 性別 , 季節(jié) ,星期等
枚舉要注意的細(xì)節(jié):
- 枚舉類也是一個(gè)特殊的類誊锭。
- 枚舉值默認(rèn)的修飾符是public static final表悬。
- 枚舉值就是是枚舉值所屬的類的類型, 然后枚舉值是指向了本類的對象的丧靡。
- 枚舉類的構(gòu)造方法默認(rèn)的修飾符是private的蟆沫。
- 枚舉類可以定義自己的成員變量與成員函數(shù)。
- 枚舉類可以自定義構(gòu)造函數(shù)温治,但是構(gòu)造函數(shù)的修飾符必須是private饭庞。
- 枚舉類可以存在抽象的方法,但是枚舉值必須要實(shí)現(xiàn)抽象的方法罐盔。
- 枚舉值必須要位置枚舉類的第一個(gè)語句但绕。
- 枚舉值可以用于switch語句
enum Sex{
man("男"){
@Override
public void run() {
System.out.println("男人在跑...");
}
},woman("女"){
@Override
public void run() {
System.out.println("女人在跑...");
}
}; //枚舉值
String value; //成員變量
// public static final Sex man = new Sex();
//構(gòu)造函數(shù)
private Sex(String value){
this.value = value;
}
//成員函數(shù)
public void getValue(){
System.out.println("value :"+ value);
}
public abstract void run();
}
public class Demo {
public static void main(String[] args) {
Sex sex = Sex.man; //獲取到了枚舉類的對象
sex.value = "男";
sex.getValue();
sex.run();
//結(jié)果 :value :男
男人在跑...
}
}
- 可變參數(shù)之前也使用過,比如我們要寫一個(gè)方法來計(jì)算兩個(gè)數(shù)的和:
public void add(int a, int b){
System.out.println("和是: " + (a+b));
}
但是呢,我們要求好幾個(gè)數(shù)的和捏顺,但是不知道有幾個(gè)六孵,一種思路就是將函數(shù)形參聲明為一個(gè)數(shù)組,傳遞數(shù)組幅骄,來求數(shù)組元素的和劫窒。可變參數(shù)其實(shí)就是維護(hù)了一個(gè)數(shù)組拆座,此時(shí)可以使用可變參數(shù)主巍,格式
類型... 變量名
public void add(int... nums){
int sum = 0;
for (int i : nums){
sum+=i;
}
System.out.println("和是: " + sum);
}
- 靜態(tài)導(dǎo)入
靜態(tài)導(dǎo)入的作用: 簡化書寫。
靜態(tài)導(dǎo)入可以作用一個(gè)類的所有靜態(tài)成員挪凑。
靜態(tài)導(dǎo)入的格式:
import static 包名.類名.靜態(tài)的成員孕索;
靜態(tài)導(dǎo)入要注意:
如果靜態(tài)導(dǎo)入的成員與本類的成員存在同名的情況下,那么默認(rèn)使用本類的靜態(tài)成員躏碳,如果需要指定使用靜態(tài)導(dǎo)入的成員搞旭,那么需要在靜態(tài)成員前面加上類名。個(gè)人感覺靜態(tài)導(dǎo)入還是少用比較好菇绵,包的機(jī)制有個(gè)重要的作用就是避免命名的問題肄渗。
import static java.lang.System.out;
public class Demo1 {
public static void main(String[] args) {
out.println("haha...");
}
}
- 元數(shù)據(jù)和Instrumentation
這個(gè)暫時(shí)可以不用理解,在此就先不詳解咬最。