今日內容
- 數組排序之冒泡排序和Arrays工具類
- 包裝類
- Date類和SimpleDateFormat類
01. 數組排序之冒泡排序原理圖解
- 看圖分析
- 相鄰的兩個數進行比較
02. 數組排序之冒泡排序代碼實現
- 代碼實現
- 7分鐘時間練習
03. Arrays類的概述和使用
Arrays:提供了對數組操作的各種方法。
- public static String toString(int[] a):把數組轉成字符串 * 細節: println()打印字符數組的時候, 不需要調用toString方法, 也可以直接打印出字符元素 * 原因: println方法底層對字符數組有特殊支持 --> 自動遍歷打印
- public static void sort(int[] a):對數組進行升序排序
- static int binarySearch(int[] a, int key) : 查找傳入元素在傳入數組中出現的索引位置, 如果沒有找到, 返回-插入點-1 --> 注意: 二分查找法, 只能操作有序數組
轉ppt練習
04. Arrays類中構造方法的問題
- 一般什麼情況下構造方法需要私有?
總結: 如果一個類中, 所有的成員, 都是靜態修飾的.
往往會多做一步操作, 私有構造方法
如果構造方法被私有了, 在API中就不會顯示出來.
--------------以下爲擴展內容------------------
細節: 如果在編寫一個類的時候, 構造方法被私有了, 那麼在生成幫助文檔的時候, 構造方法將不會顯示.
如何生成幫助文檔:
1. 對着類右鍵
2. 導出
3. java -> javadoc
4. 選擇一個存放的路徑
05. 基本類型包裝類的概述
- 爲什麼要有包裝類?
- 基本數據類型對應的包裝類有哪些?
總結:
1: 包裝類就是對基本數據類型, 進行包裝, 使其功能變得更加強大
進行包裝 : 將一個基本類型變成了類, 類中就會有方法
2:
int --> Integer
char --> Character
-----------------------------------------------
byte --> Byte
short --> Short
long --> Long
boolean --> Boolean
float --> Float
double --> Double
06. Integer類的概述和構造方法
- Integer常用構造方法
1: Integer(int value) --> 將一個基本數據類型, 包裝成Integer對象
int num = 10;
Integer i = new Integer(num); --> 包裝
Integer(String s) --> 將一個數字類型的字符串, 轉換爲Integer類型的數值
注意: 只能操作的是[數字類型]的字符串.
07. int類型和String類型的相互轉換
- int intValue() -->
- static int parseInt(String s) -->
- static String toString() --> .
總結:
1. int -- String
A. 推薦: 使用字符串的+拼接
舉例: --> 100 + ""
B. 不推薦: 將int --> Integer --> toString()
舉例: Integer i = new Integer(100);
i.toString();
2. String -- int
A. 推薦: 使用Integer.parseInt("123");
舉例: Integer.parseInt("123");
B. 不推薦: 將字符串封裝成Integer --> 調用intValue();
舉例: Integer i = new Integer("123");
i.intValue();
08. Integer的練習之把字符串中的數據排序
- 需求
我有如下一個字符串:"91 27 46 38 50"
請寫代碼實現最終輸出結果是:"27 38 46 50 91"
提示:這裏需要參考String類中的方法
public String[] split(String regex)
分析:
A:定義一個字符串對象
B:把字符串中的數字數據存儲到一個int類型的數組中
C:對int數組進行排序
D:把排序後的數組中的元素進行拼接得到一個字符串
E:輸出字符串
- 需要記憶的方法 : String[] split(String regex) : 根據傳入的字符串, 切割給定的字符串.
注意: 如果遇到了特殊字符, 需要加入\\進行轉義.
09. JDK5的新特性自動裝箱和拆箱
- 自動裝箱:把基本數據類型轉換爲對應的包裝類類型
- public static Integer valueOf(int i)
- 自動拆箱:把包裝類類型轉換爲對應的基本數據類型
- public int intValue()
總結:
1. 手動拆箱: 手動的將Integer對象轉換爲int整數
Integer i = new Integer(100);
int num = i.intValue();
自動拆箱: 可以將包裝類Integer對象, 直接賦值給int數據類型
Integer i = null;
// 將包裝類直接賦值給基本數據類型
int num = i; // 自動拆箱 -> 底層會自動幫我們調用intValue
// null調用方法, 就會引發空指針異常
System.out.println(num);
2. 手動裝箱: 手動的將基本數據類型, 包裝成包裝類對象
int num = 10;
Integer i = new Integer(num);
自動裝箱: 將基本數據類型, 直接賦值給包裝類對象的引用
Integer i = 100; // 自動裝箱, 底層是通過valueOf和有參構造配合使用的
會先判斷裝箱的值是否在byte的取值範圍內, 如果不在, 使用構造方法創建
如果在的話, 則通過底層數組直接獲取Integer對象.
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high) {
return IntegerCache.cache[i + (-IntegerCache.low)];
}
return new Integer(i);
}
面試題:
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i==j); // false
System.out.println(i.equals(j)); // true
Integer a = 500;
Integer b = 500;
System.out.println(a==b); // false
System.out.println(a.equals(b)); // true
Integer aa = 127;
Integer bb = 127;
System.out.println(aa==bb); // true
System.out.println(aa.equals(bb)); // true
10. Date類的概述和構造
- Date類的作用?
- 常見構造有?
總結:
1: Date類用於表示時間
2: Date(): 根據當前時間, 封裝時間對象
Date(long date): 根據傳入的毫秒值, 在時間原點上累加, 封裝時間對象.
時間原點: 1970-1-1 00:00:00
11. Date類的常用方法
- void setTime(long time)
- long getTime()
總結:
1:
setTime(long time) 類似Date的有參構造
可以根據傳入的毫秒值轉換成對應的日期對象.
2:
getTime() : 根據日期對象獲取毫秒值.
Date d = new Date(1000); --> getTime返回結果--> 1000
對比: System.currentTimeMillis只能獲取1970-1-1日到今天的毫秒值.
12. SimpleDateFormat類的概述和使用
- SimpleDateFormat可以實現怎樣的操作?
總結:
1: 可以將日期字符串"2088年8月8日" --> 日期對象.
String s = "2088年8月8日";
// 1. 創建日期格式化對象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
// 2. 調用parse方法, 將傳入的日期字符串轉換爲日期對象
Date d = sdf.parse(s);
System.out.println(d);
2: 將日期對象, 轉換成日期字符串.
Date d = new Date();
// 1. 創建日期格式化對象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// 2. 調用格式化的format方法, 將日期對象轉換成字符串
String s = sdf.format(d);
System.out.println(s);
- 案例演示: 求出你來到這個世界多少天
13. Date的練習之日期工具類的定義和使用
需求:
- 把日期轉換爲指定格式的字符串
- 兩個明確:
- 返回值類型:String
- 參數列表:Date date, String format
需求:
- 把指定格式的字符串解析爲日期
- 兩個明確:
- 返回值類型:Date
- 參數列表:String s, String format
14. Calendar
-
成員方法
- public static Calendar getInstance() --> 獲取子類對象
public int get(int field) --> 根據對應的成員字段獲取年月日...
public void add(int field,int amount) --> 設置指定字段的偏移量 public final void set(int year,int month,int date) --> 設置爲某一年的具體日期 void set(int field, int value) --> 設置指定字段爲對應的值.
-
常用字段
- Calendar.YEAR --> 年 Calendar.MONTH --> 月 --> 使用的時候需要+1 --> 老外按照0-11 Calendar.DAYOFMONTH --> 日 DAYOFWEEK --> 星期 --> 使用的時候需要查表 Calendar.DAYOFYEAR --> 獲取當前日期在這一年中的第多少天
//char[] cArr = {' ','日','一','二','三','四','五','六'};