import static語句導入一個類中的某個靜態方法或所有靜態方法,另外靜態導入比非靜態導入更加簡化了代碼的書寫
package com.learn;
import static java.lang.Math.*;
public class Demo
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
int a = 5;
int b = 9;
System.out.println(max(a,b));
}
}
只能出現在參數列表的最後;這個要記住
...位於變量類型和變量名之間,前後有無空格都可以;
調用可變參數的方法時,編譯器爲該可變參數隱含創建一個數組,在方法體中以數組的形式訪問可變參數。
package com.learn;
public class Demo2
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.out.println(sum(1,2,3,4,5));
}
public static int sum(int...a)
{
int b = 0;
for (int i = 0; i < a.length; i++)
{
b +=a[i];
}
return b;
}
}
for ( type 變量名:集合變量名 ) { … }
注意事項:
迭代變量必須在( )中定義!
集合變量可以是數組或實現了Iterable接口的集合類
基本類型變量-->包裝類對象:通過new WrapperClass(primitive)創建包裝類對象-->基本類型變量:通過WrapperInstance.xxxvalue()方法
自動裝箱:Integer num1 = 12;自動拆箱:System.out.println(num1 + 12);
基本數據類型的對象緩存:
Integer num1 = 12;
Integer num2 = 12;
System.out.println(num1 == num2);
Integer num3 = 129;
Integer num4 = 129;
System.out.println(num3 == num4);
java5新增了一個enum關鍵字(它與class,interface關鍵字的地位相同,作用相似),用以定義枚舉類。枚舉是一個特殊的類,它的內部一樣可以定義Filed、方法、構造函數,可以實現一個或者多個接口。一個java源文件中最多隻能定義一個public訪問權限的模具類,且該java源文件也必須和該枚舉類的類名相同。
1.枚舉類可以實現一個或多個接口,使用enum定義的枚舉類默認繼承了java.lang.Enum類,普通類是直接繼承Object類的。同時Enum類實現了Serializable和Comparable兩個接口,也就是說,enum類可以調用Enum中的方法和複寫Serizlizable和Comparable接口中的抽象方法;2.使用enum定義、非抽象的枚舉類默認會使用final修飾,因此枚舉類不能被繼承,也就是沒有子類。3.枚舉類的構造器只能使用private修飾符,如果省略了構造器的訪問控制符,則默認使用private修飾。4.枚舉類的所有實例必須在枚舉類的第一行顯示列出,否則這個枚舉類永遠不能產生實例。列出這些實例時,系統會自動添加public static final修飾,無需程序員顯示添加。
枚舉就是要讓某個類型的變量的取值只能爲若干個固定值中的一個,否則,編譯器就會報錯。枚舉可以讓編譯器在編譯時就可以控制源程序中填寫的非法值,普通變量的方式在開發階段無法實現這一目標。
1.私有的構造函數2.每個元素分別用一個公有的靜態成員變量表示 public static final3.可以有若干公有方法或抽象方法。
package com.learn;
public class SeasonTest
{
/**
* @param args
* 1.私有的構造函數
* 2.每個元素分別用一個公有的靜態成員變量表示 public static final
* 3.可以有若干公有方法或抽象方法。
* 定義季節的枚舉類
*/
public SeasonTest(Season s)
{
//創建該類的構造函數
System.out.println("季節:"+s.getName());
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
//創建對象,傳入Season類中的靜態常量
new SeasonTest(Season.AUTUMN);
}
}
class Season
{
private String name;
//因爲季節對象是固定的四個季節,所以使用final分別定義四個季節常量
public static final Season SPRING = new Season("春天");
public static final Season SUMMER = new Season("夏天");
public static final Season AUTUMN = new Season("秋天");
public static final Season WINTER = new Season("冬天");
//用private將構造函數隱藏
private Season(String name)
{
// TODO Auto-generated constructor stub
this.name = name;
}
public String getName()
{
return name;
}
}
使用枚舉類升級上面程序
package com.learn;
//此處enum類如果修飾符是public,必須單獨寫一個類文件
enum Season1
{
//枚舉類的素有示例必須寫在該類的第一行
//SPRING("春天")是這樣寫法的簡寫:
//publi static final SPRING = new Season("春天");
SPRING("春天"),SUMMER("夏天"),AUTUMN("秋天"),WINTER("冬天");
private String name;
private Season1(String name)//使用private隱藏枚舉中的構造方法
{
this.name = name;
}
public String getName()
{
return name;
}
}
public class SeasonTest2
{
SeasonTest2(Season s)
{
System.out.println("季節:"+s.getName());
}
public static void main(String[] args)
{
new SeasonTest2(Season.AUTUMN);
}
}
Java.lang.Enum類中常用的方法
package com.learn;
public class TrafficLamp
{
/**
* @param args
*/
public TrafficLamp(Lamp l)
{
System.out.println(l);
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
new TrafficLamp(Lamp.GREEN);
}
public enum Lamp
{
//枚舉類的抽象方法
/*相當於
public static final RED = new Lamp的子類(40)
{
public Lamp returnLamp()
{
return YELLOW;
}
}
簡寫
*/
RED(40)
{
public Lamp returnLamp()
{
return YELLOW;
}
},
GREEN(60)
{
public Lamp returnLamp()
{
return RED;
}
},
YELLOW(3)
{
public Lamp returnLamp()
{
return GREEN;
}
};
private int time;
//每個實例實現該抽象方法
public abstract Lamp returnLamp();
private Lamp(int time)
{
this.time = time;
}
}
}
總結: