1. 方法的可變參數
public static int add(int ... arr) {
int length = arr.length;
int sum = 0;
for(int i =0; i < length; i++) {
sum = sum + arr[i];
}
return sum;
}
在方法中用 … 表示可變參數
可變參數必須放在方法參數的最後一個並且有且只有一個 ;
2. for-each 語句
//foreach語句格式:
for(元素類型type 元素變量value : 遍歷對象obj) {
//引用x的java語句;
}
3. 靜態導入(import)(瞭解)
import static 導入一個類的所有靜態域(方法與屬性),
使用導入類的靜態域就像是在本類中定義的一樣;
使用靜態導入後調用那個包中的方法可不加類名直接調用;
注意:不推薦使用靜態導入;
4. 泛型
在定義時類型不確定,只有在具體使用時才能確定類型
4.1 泛型類
class MyClass<T,E> { //泛型類可以接受多個類型
private T t;
private E e;
}
4.2 泛型方法
class MyClass2 {
//可接收泛型T類型的參數
public <T> void method(T t) {
System.out.println(t);
}
}
4.3 通配符
<?>: 由於傳入類型無法確定,因此無法設置具體值到相應對象中public static void fun(Myclass<?> myclass) {
//程序無法得知?代表哪種類型,無法設置這個對象裏的屬性的值,只能查看
//myclass.setT("hahaha"); //將會報錯
System.out.println(myclass.getT()); //輸出null
}
<?extends> :表示泛型上限,類與方法均可使用
public static void fun(Myclass<? extends Number> myclass)
<?super> :表示泛型下限 ,只能用在方法級別
public void fun(Myclass<? super String> myclass){}
4.4 類型擦除
泛型只存在於編譯階段,進入JVM之前,與泛型相關的信息會被完全擦除。
在JVM中並不存在泛型的概念。泛型類在進行類型擦除時,若未指定泛型的上限,泛型相關信息會被擦除爲Object類,否則,擦除爲相應的類型上限。
5. 枚舉
//實際是一個繼承於Enum類的類
enum Color {
//private int a = 5; 這條語句將會報錯,這不能寫在第一行,第一行必須是要定義的枚舉變量;
紅, 黃, 藍;
}
public class Test1 {
public static void main(String[] args) {
System.out.println(Color.紅);
System.out.println(Color.紅.ordinal()); //輸出對應下標
System.out.println(Color.藍.name());
//產生一個包含所有枚舉變量的數組
Color[] arr = Color.values();
for(Color c : arr) {
System.out.print(c+"、");
}
}
}
注意:enum並不是一個新的結構,使用enum定義的枚舉實際上默認繼承Enum枚舉類。因此enum定義的,枚舉結構實際上就是一個多例類;
Enum類常用的三個方法:
ordinal():返回枚舉對象下標,默認第一個對象爲0;
name():返回枚舉對象名稱,默認與對象名稱保持一致;
values():返回所有枚舉對象的數組;
應用枚舉注意:
在枚舉中支持定義其他結構,如構造方法、普通方法和普通屬性等;
當枚舉類中還包含其他結構時,枚舉對象的定義必須放在首行; (否則會編譯報錯)
枚舉不能夠再繼承類,因爲它默認繼承了Enum類,但枚舉可以實現一個或多個接口;
6. jdk內置的三大註解
註解:@標識符 @Override @Controller @Date
-
準確覆寫: @Override
用途:編譯器檢查當前覆寫方法是否滿足要求(方法名稱是否正確、權限是否合理),以達到及時顯示錯誤;
-
過期聲明:@Deprecated
在早期版本的代碼(方法),表示該方法在當前版本中已經不推薦使用,但是使用了也不會報錯。只是起一個警告提示作用; -
壓制警告:@SuppressWarnings
壓制警告信息,壓制信息不再提示;