1、異常處理方案:
異常丟擲 : throws 把異常丟擲到上一層,誰呼叫誰解決
異常捕獲 : try..catch
try{
有可能出現異常的程式碼;
}catch(FileNotFoundException e){
處理異常程式碼;
}catch(NullPointerException e){
處理異常程式碼;
}catch(Exception e){
所有異常都能接收;
}finally{
無論try中是否會出現異常,都會執行finally中的程式碼
//資源的關閉等程式碼
}
一個try的後面可以接 1~n個catch,try中如果一旦出現異常,try下面的程式碼不會執行,直接進入catch的判斷,catch從上到下一次判斷,滿足哪一個catch捕獲的型別,就執行對應的語句體,異常一旦捕獲,程式執行過程中出現的異常按照指定方案解決,不會影響後續程式碼的執行
2、自定義異常:
自定義的異常型別
所有自定義的異常型別必須直接或者間接繼承自Exception
如果自定義異常為執行時期異常,需要直接或者間接的繼承自RuntimeException
throw 製造異常
3、常用類 --> 字串
(1)String 不可變長字元序列
(2)StringBuilder 可變長字元序列,執行緒不安全|不同步,效率較高
(3)StringBuffer 可變長字元序列,執行緒安全|同步,效率較低
(4)學些一個類:
①類的作用 類的繼承體系
②構造器
③方法(靜態方法|成員方法)
(5)String類表示字串。 Java程式中的所有字串文字(例如"abc" )都實現為此類的例項。
(6)String str = "abc"; 建立一個字串物件"abc",字串常量 -->字串常量池中
(7)String str2 = new String("haha"); 2個物件 第1個new->在堆中 第2個"haha"-->字串常量池中
(8)String str2 = new String("abc"); 1個物件 第1個new->在堆中 "abc"->上面已經使用過,字串常量池中已經存在
(9)字串底層:
jdk11-->使用private final byte[] value; 位元組陣列儲存字串中的字元資料,jdk8--> private final char[] value;字元陣列
4、可變長字元序列
(1)StringBuilder : 執行緒不安全,但不保證同步,相對效率較高,適合使用在單執行緒下大量操作字串,效率高
(2)StringBuffer : 執行緒安全的,相對效率較低
多執行緒下大量操作字串建議使用StringBuffer
(3)String : 少量修改字串,適合使用String,因為表示字串String物件簡單,功能強大的API
(4)效率: StringBuilder > StringBuffer > String
(5)擴容:append--> int newCapacity = (oldCapacity << 1) + 2; 每次擴容原容量的2倍+2
5、基本資料型別的包裝類:
基本 包裝
byte Byte
short Short
int Integer
long Long
char Character
boolean Boolean
float Float
double Double
(1)包裝類的優點:
①類可以提供很多成員,功能...
②集合中之能儲存引用資料型別,想要儲存基本資料型別資料的時候,可以先轉為對應的包裝型別,再儲存
③基本資料型別與對應包裝型別資料的預設值不同,當在具體業務下,比如區分賬戶餘額的0與null兩種狀態,可以使用包裝型別表示賬戶餘額
(2)基本資料型別的優點:
有利於節約記憶體
(3)自動拆裝箱:
①自動裝箱: 基本-->包裝
②自動拆箱: 包裝-->基本
6、Math 數學相關類
(1)靜態工廠--> 工具類
java.lang下不需要導包
(2)隨機整數:
[min,max) (int)(Math.random()*(max-min)+min)
[0.0,1.0) * (max-min)
[0.0,max-min) + min
[min,max)
[min,max] (int)(Math.random()*(max-min+1)+min)
7、Date:
(1)Date類表示特定的時刻,精度為毫秒。
(2)日期格式轉換器 SimpleDateFormat
目標:①將指定格式的字串轉為日期物件 parse(str)
②將日期物件轉為指定格式的字串 format(date)