1、靜態導入
示例:
package cn.zuxia.test;
/**
* 這裏就是靜態導入
*/
import static java.lang.Math.*; //通過靜態導入導入Math類的所有靜態方法
public class Test01 {
public static void main(String[] args) {
System.out.println(max(3, 6)); //這裏直接使用的max方法,而不是Math.max()
}
}
2、可變參數
作用:一個方法接受的參數個數不固定
特點:
* 只能出現在參數列表的最後
* ...位於變量類型和變量名之間,前後有無空格都可以
* 調用可變參數的方法時,編譯器爲該可變參數隱含創建一個數組,在方法體中以數組的形式訪問可變參數
示例:
public static void main(String[] args) {
add(2, 3, 5, 6);
}
public static void add(int ... args) {
System.out.println(args[0]);
for (int j = 0; j < args.length; j++) {
System.out.println(args[j]);
}
}
3、for循環加強
語法:for([final] Type 變量名 : 集合變量名) {......}
注意事項:
* 迭代變量變量必須在()中定義
* 集合變量名可以是數組或實現了Iterable接口的集合類
示例:
public static void main(String[] args) {
add(2, 3, 5, 6);
}
public static void add(int ... args) {
System.out.println(args[0]);
for (int arg : args) {
System.out.println(arg);
}
}
大家可以去下載sun公司的語言規範
4、基本類型的自動裝箱與拆箱
Integer obj1 = 3; //自動裝箱
System.out.println(obj1 + 3); //自動拆箱
Integer s1 = 3;
Integer s2 = 3;
System.out.println(s1 == s2); //true
Integer s3 = 223;
Integer s4 = 223;
System.out.println(s3 == s4); //false
問題在於Interger在-128~127時是一個對象,大於127就是另一個對象,這就是享元模式
* 享元模式:當對象很小,而且很多地方都要使用,這時我們就可以把這些對象用一個對象來表示,如abcacd如果每個字母都是一個對象,那麼這時的對象就很多了(6個),我們可以把a作爲一個對象,當再次使用a時,我們就把這些對象作爲一個對象(4個:串中有兩個a、c我們把他們看做一個對象)。--->個人理解,詳情請看:http://yangchao890.blog.163.com/blog/static/2185791120090221257225/
5、枚舉
作用:枚舉就是讓某個類型的變量的取值爲若干個固定值的一個否則,編譯器就會報錯。枚舉可以讓編譯器在編譯時就可以控制程序中的非法值,普通變量的方式在開發階段無法實現這一目標。
*用普通類如何實現枚舉功能,定義一個Weekday的類來模擬枚舉功能
1)、私有的構造方法
2)、每個元素分別用一個公有的靜態成員表示
3)、可以有若干公有方法或抽象方法, 例如:要提供nextDay必須是抽象的。採用抽象方法定義nextDay就將大量的if.else語句轉移成了一個個獨立的類。
示例:
EnumTest.java
WeekDay weekday = WeekDay.MON;
System.out.println(weekday.nextDay());
System.out.println(weekday.toString());
WeekDay.java
public abstract class WeekDay {
private WeekDay() {
}
public final static WeekDay SUN = new WeekDay() {
@Override
public WeekDay nextDay() {
return MON;
}
};
public final static WeekDay MON = new WeekDay() {
@Override
public WeekDay nextDay() {
return SUN;
}
};
public abstract WeekDay nextDay();
/*public WeekDay nextDay() {
if (this == SUN) {
return MON;
} else {
return SUN;
}
}*/
public String toString() {
return this == SUN ? "SUN" : "MON";
}
*枚舉的基本應用
語法:public enum enum_name {
enum_value1,enum_value2,enum_value3......
}
常用靜態方法:name、ordinal、valueof、values、toString
總結:枚舉是一個特殊的類,其中枚舉中的每一個元素都是該類的一個實例對象。
*枚舉中的構造方法
示例:
public enum Number {
one(1), //調用的是第二個構造方法
two(), //調用的是第一個構造方法
three,four;
private Number() {}
private Number(int order) {}
}
注意:枚舉中的構造方法必須是私有的
*帶有抽象方法的枚舉
示例:
public enum TrafficLamp {
RED(30){
public TrafficLamp nextLamp() {
return GREEN;
}
},
GREEN(45){
public TrafficLamp nextLamp() {
return YELLOW;
}
},
YELLOW(5){
public TrafficLamp nextLamp() {
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time) {
this.time = time;
}
}
*枚舉只有一個成員時,就可以作爲一種單例的實現方式