1. 程式人生 > 其它 >Java自學小白——常用API、Lambda、常見演算法

Java自學小白——常用API、Lambda、常見演算法

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表示式的簡化體驗

     =====>

  • 總結