Java自學小白——常用API、Lambda、常見演算法
阿新 • • 發佈:2022-04-06
Java自學小白——常用API、Lambda、常見演算法
一、常用API
1.日期與時間
- Date類
- Date類表示當前所在系統的日期時間資訊
- 實現程式碼:
-
- 執行結果:
-
- 總結
- SimpleDateFormat類
- 作用可以去完成日期時間的格式化操作
-
- 例:
- SimpleDateFormat解析字串時間成為日期物件
實現程式碼:
執行結果:
練習:
實現程式碼:
1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4 5 public class SimpleDateFormatTest3 { 6 public static void main(String[] args) throws ParseException { 7 //1.開始 結束 8 String startTime = "2021-11-11 00:00:00"; 9 String endTime = "2021-11-11 00:10:00";10 //2.小賈 小皮 11 String xiaoJia = "2021-11-11 00:03:47"; 12 String xiaoPi = "2021-11-11 00:10:11"; 13 //3.解析字串稱為日期物件 14 SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 15 16 Date d1 = s.parse(startTime); 17 Date d2 = s.parse(endTime); 18 Date d3 = s.parse(xiaoJia);19 Date d4 = s.parse(xiaoPi); 20 21 //4.判斷是否在時間之內 after before方法 22 if(d3.after(d1) && d3.before(d2)){ 23 System.out.println("小賈秒殺成功"); 24 }else{ 25 System.out.println("小賈秒殺失敗"); 26 } 27 if(d4.after(d1) && d4.before(d2)){ 28 System.out.println("小皮秒殺成功"); 29 }else{ 30 System.out.println("小皮秒殺失敗"); 31 } 32 } 33 }
執行結果:
- Calendar
- Calendar代表了系統此刻日期對應的日曆物件
- Calendar是一個抽象類,不能直接創造物件
- JDK8新增日期類
-
二、包裝類
- 包裝類其實就8種基本資料型別對應的引用型別。
-
為什麼提供包裝類?
-
Java為了實現一切皆物件,為8種基本型別提供了對應的引用型別
-
後面的集合和泛型也只能支援包裝型別,不支援基本資料型別
-
- 自動裝箱:基本型別的資料和變數可以直接賦值給包裝型別的變數。
- 自動拆箱:包裝型別的變數可以直接賦值給基本資料的變數。
- 包裝類的特有功能:
- 包裝類的變數預設值可以是nul,容錯率更高
- 可以把基本型別的資料轉換成字串型別(用處不大)
- 可以把字串型別的數值轉換成真實的資料型別(有用)
三、正則表示式
- 可以用一些規定的字元來定製規則,並用來校驗資料格式的合法性
案例:
實現程式碼:
實現程式碼:
執行結果:
四、Arrays類
- Arrays是陣列操作工具類,專門用於運算元組元素的
五、常見演算法
1.氣泡排序
- 每次從陣列中找到最大值放在陣列後邊去
-
實現氣泡排序的關鍵步驟
- 確定總共要作幾輪:陣列的長度-1。
- 每輪比較幾次
-
- 當前位置大於後一個位置則交換資料
- 實現程式碼:
- 執行結果:
2.選擇排序演算法
- 每輪選擇當前位置,開始找出後面的較小值與該位置交換
- 選擇排序的關鍵:
- 確定總共要選幾輪:陣列的長度-1
- 控制每輪從以前的位置為基準,與後面元素選擇幾次。
- 實現程式碼:
- 執行結果:
3.二分法查詢
- 二分法查詢為在一個數組中利用二分法查詢一個數
- 注意:這個陣列必須是實現排序好的,否則會出錯
- 二分法查詢正常的檢索條件應該為開始位置min<=結束位置max
- 實現程式碼:
-
1 /** 2 * 二分查詢演算法: 3 * 利用二分法找出一個數在陣列(需要已經排好序的陣列)中的位置,返回索引 4 * 沒有找到則返回-1 5 */ 6 public class Demo3 { 7 public static void main(String[] args) { 8 int[] a = {11, 22, 33, 45, 55, 66, 77, 88, 99}; 9 System.out.println("請輸入你要尋找的數"); 10 Scanner sc = new Scanner(System.in); 11 int number = sc.nextInt(); 12 int index = Sar(a, number); 13 if (index != -1) { 14 System.out.println(number + "在陣列中的位置為" + (index +1)); //返回的位置為索引+1符合現實的計數 15 } else { 16 System.out.println("該陣列中沒有" + number + "這個數字"); 17 } 18 } 19 20 public static int Sar(int[] arr, int number) { 21 int left = 0; 22 int right = arr.length - 1; 23 //當左邊的標誌小於右邊的標誌時候才說明還可以找,否則說明已經找完了 24 while (left <= right) { 25 //二分法的關鍵,二分 26 int mid = (left + right) / 2; 27 //當找到時返回mid 28 if (number == arr[mid]) { 29 return mid; 30 } else if (number > arr[mid]) { 31 //如果取得數大於Mid,則將left取在mid的右邊 32 left = mid + 1; 33 } else if (number < arr[mid]) { 34 //如果取得數小於Mid,則將right取在mid的左邊 35 right = mid - 1; 36 } 37 } 38 return -1; 39 } 40 }
- 執行結果:
- 總結
六、Lambda表示式
- Lambda表示式是JDK8開始後的一種新語法形式。作用是簡化匿名內部類的程式碼寫法。
-
什麼是函式式介面?首先必須是介面、其次介面中有且僅有一個抽象方法的形式
- Lambda表示式的簡化體驗
=====>
- 總結