---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ----------------------
靜態導入:
import語句可以導入一個類或某個包中的所有類
import static語句導入一個類中的某個靜態方法或所有靜態方法
語法舉例:
import static java.lang.Math.max;
import static java.lang.Math.*;
當導入靜態方法後,可以不使用類名調用方法,如:
System.out.println(max(3,6));
這是java 1.5版本出現的新特性,JDK要使用1.5以上版本。
-------------------------------------------------------------------------------
可變參數的方法:
當我們對同一個方法所傳入的參數個數不確定時,以前要使用重載的方式寫多個方法,而1.5之後,可以使用
可變參數來定義一個方法即可。如:
System.out.println(countScore(2,3,5));
System.out.println(countScore(1,2,3,5));
就需要一個可變參數的countScore方法來實現。
可變參數的特點:
1、只能出現在參數列表的最後;
2、...位於變量類型和變量名之間,前後有無空格都可以;
3、調用可變參數的方法時,編譯器爲該可變參數隱含創建一個數組,在方法體中以數組的形式訪問可變參數。
Java代碼
publicstaticint add(int x,int ...args) {
int sum = x;
for(int i=0;i<args.length;i++) {
sum += args[i];
}
return sum;
}
--------------------------------------------------------------------------------------------------------------------------
增強for循環:
格式:
for ( type 變量名:集合變量名 ) { … }
注意事項:
1、迭代變量必須在( )中定義!
2、集合變量可以是數組或實現了Iterable接口的集合類。
如在可變參數中的例子:
Java代碼
publicstaticint add(int x,int ...args) {
int sum = x;
for(int arg : args) {
sum += args[i];
}
return sum;
}
--------------------------------------------------------------------------------------------
基本數據類型的自動拆箱裝箱:
自動裝箱:
Integer num1 = 12;
將int類型的12自動裝箱爲一個Integer對象。
自動拆箱:
System.out.println(num1 + 12);
將Integer類型的num1拆箱爲一個int類型再與12進行運算。
---------------------------------------------------------------------------------
享元設計模式:
Integer i1 = 13
Integer i2 = 13
System.out.print(i1 == i2);//返回的是true
Integer i1 = 137
Integer i2 = 137
System.out.print(i1 == i2);//返回的是false
在自動裝箱過程中,如果賦值大小在一個字節之內,-128-127之間的數字,一旦被裝箱成一個對象,就會
放入緩存中,如果再有相同的的賦值動作,則它們指向同一個裝箱的對象。
這是一種設計模式:享元設計模式。
----------------------------------------------------------------------------------
枚舉:
枚舉就相當於一個類,其中也可以定義構造方法、成員變量、普通方法和抽象方法。
枚舉元素必須位於枚舉體中的最開始部分,枚舉元素列表的後要有分號與其他成員分隔。把枚舉中的成員方
法或變量等放在枚舉元素的前面,編譯器報告錯誤。
枚舉只有一個成員時,就可以作爲一種單例的實現方式。
帶構造方法的枚舉:
1、構造方法必須定義成私有的 。
2、枚舉元素MON和MON()的效果一樣,都是調用默認的構造方法。
帶方法的枚舉:
定義枚舉TrafficLamp
實現普通的next方法
實現抽象的next方法:每個元素分別是由枚舉類的子類來生成的實例對象,這些子類採用類似內部類的方式進行定義。
增加表示時間的構造方法
Java代碼
publicclass EnumDemo {
publicstaticvoid main(String[] args) {
WeekDay weekDay = WeekDay.FRI;
System.out.println(weekDay);
System.out.println(weekDay.name());//打印這個對象的名字
System.out.println(weekDay.ordinal());//對象排在哪個位置
System.out.println(WeekDay.valueOf("SUN"));
System.out.println(WeekDay.values().length);
TrafficLamp lamp = TrafficLamp.GREEN;
System.out.println(lamp.nextLamp());
}
publicenum WeekDay {
SUN(1),MON,TUE,WED,THI,FRI,SAT;//元素列表必須放在最前面,代表枚舉的實例對象
//默認調用無參構造方法
private WeekDay() {
System.out.println("first");
}
private WeekDay(int day) {
System.out.println("second");
}
}
publicenum TrafficLamp {
RED(30) {//每個元素代表一個實例對象,必須實現抽象方法
@Override
public TrafficLamp nextLamp() {
return GREEN;
}
},GREEN(45) {
@Override
public TrafficLamp nextLamp() {
return YELLOW;
}
},YELLOW(5) {
@Override
public TrafficLamp nextLamp() {
return RED;
}
};
publicabstract TrafficLamp nextLamp();//定義了抽象方法的枚舉不需要在類名上加抽象
privateint time;
private TrafficLamp(int time) {
this.time = time;
}
}
}
---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ----------------------