恢復內容開始 選擇結構 選擇結構分為為i語句和switch語句 if語句 1.if單選擇語句 結構圖:(用輸出語句打了一個簡單結構圖) 代碼示例: public class IfDemo01 { public static void main(String[] args) { /*if單選擇語句 i ...
轉自:
http://www.java265.com/JavaCourse/202206/3752.html
下文筆者講述泛型的入門篇,如下所示:
泛型簡介
泛型 從JDK5中就可以使用此語法糖 泛型的使用可在編譯階段約束操作的數據類型,併進行檢查 泛型的語法: 泛型的語法格式:<數據類型> 泛型註意事項: 1.泛型只能支持引用數據類型 2.集合的全部介面和實現類都是支持泛型使用
泛型的優點
1.可提前約定數據類型 2.並且在編譯階段就確定數據類型 可避免強制類型轉換的問題
例:泛型類的應用
public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("柳絮"); list.add("劉達龍"); list.add("張靚穎"); for (String s : list) { System.out.println(s); } }
自定義泛型類
我們將定義類同時指定一個泛型變數,這種類的定義模式 稱之為“泛型類” 泛型類的格式 修飾符 class 類名<泛型變數> { } public class MyClassTest<E>{ }
例:自定義泛型類的示例
現創建一個泛型類,實現基本的增加、刪除操作,以此來具體瞭解其用法: //泛型類MyArrayLIst public class MyClassTest<E> { public void add(E e){ 代碼省略 } public void remove(E e){ 代碼省略 } } //main public static void main(String[] args) { MyClassTest<String> list = new MyClassTest<>(); //通過對泛型的設定,實現對數據專一處理 list.add("劉暢"); list.add("艾米莉"); list.remove("葉問"); }
泛型類的原理
代碼編譯時,將泛型變數替換為真實的數據類型即可
自定義泛型方法
定義方法的同時指定泛型變數,我們將這種方法稱之為“泛型方法” 泛型方法的格式: 修飾符<泛型變數> 返回值類型 方法名(形參列表){ } public <E> void view(E e){ } 泛型方法的功能: 方法中可以使用泛型接收一切實際類型的參數, 方法更具備通用性。 泛型方法註意事項: 泛型方法需要區別於泛型類中所定義的方法 雖然它們也在使用泛型 但是該泛型不是其定義的,而是泛型類定義
例:泛型方法的定義
public static void main(String[] args) { String [] name = {"柳蔭","毛成","李明浩"}; view(name); Integer [] age = {18,16,20}; view(age); } //泛型方法的定義 public static <T> void view(T[] arr){ StringBuilder list = new StringBuilder(); for (int i = 0; i < arr.length; i++) { list.append(arr[i]).append("\t"); } System.out.println(list); }
自定義泛型介面
使用泛型定義的介面稱之為"泛型介面" 泛型介面的格式: public interface User<E>{ } public interface User <E>{ } 泛型介面的功能: 泛型介面可以讓實現類選擇當前功能需要操作的數據類型
例: 定義一個User介面
實現對老師Teacher類、學生Student兩個類的操作
//User介面 public interface User <E>{ void run(E e); void ageAdd(E e); } //Student類 public class Teacher { } //實現類Fantype public class Fantype implements User<Teacher> { @Override public void run(Teacher teacher) { } @Override public void ageAdd(Teacher teacher) { } } 從以上代碼可以看出 User後定義的是泛型類型 並且用於到介面中的實際操作
通配符和上下限
通配符
?可以在“使用泛型”的時候代表一切類型 E T K V是在定義泛型的時候常用的字元,當然可以使用任意字元
上下限
上下限: 指我們傳入泛型類型的最大子類和最小類型 如: 上限:<? extends 父類> :傳入類型必須是該父類或者是父類的子類 下限:<? super 子類> :傳入類型必須是該子類或者是子類的父類
例:
public static void testFun(ArrayList<? extends User> User){ //通過上下限便可以將這個問題解決掉 //要求傳入的類型必須是User的子類才可以 }