更新時間:2018-01-05 來源:黑馬程序員 瀏覽量:
集合之set接口。特點:元素存取無序,元素不可重復,無索引。
HashSet集合
創(chuàng)建集合對象
添加元素對象
遍歷集合對象
1.轉數組
2.迭代器
3.增強for
通過查看源碼發(fā)現:
確保元素唯一性,先比hash值,再比地址值,或進行equals方法比較.比較結果一樣則認為重復不添加.不一樣則添加。當hashCode方法永遠返回1時,所有對象的hash值一樣。有一些對象的成員變量不同,但是還是需要進行hash和equals方法進行比較,為了提高程序的效率,可以把成員變量和hashCode方法的返回值關聯起來。
collection和collects有什么去區(qū)別?
collection是集合體系的最頂層,包含了集合體系的共性
collections是一個工具類
Map雙列集合(接口)
概述:雙列集合用于提供一對一數據的處理,與Collection屬于同級
特點:將鍵映射到值得對象.一個映射不能包含重復的鍵,每個鍵最多只能映射一個值
鍵不可重復,值可以重復
鍵是無序的
Map和Collections的區(qū)別
Map:雙列集合,用于處理具有對應關系的數據,key是不可重復的,也叫夫妻對集合
Collection:單列集合,具有不同的子體系,有有序的,也有無序的,也叫單身漢集合
常用功能:
刪除功能:
void clear();清空集合
V remove(Object obj):根據指定的key刪除對應關系,并返回key對應的值
判斷功能:
boolean containKey();判斷指定key是否存在
boolean containValue();判斷指定的value是否存在
boolean isEmpty();判斷集合是否為空
覆蓋功能:
V put(K key,V value);將key映射到value,key存在則覆蓋value,
遍歷功能:
Set
Set
Collection
獲取功能:
V get(Object key)
Map的遍歷方式:
1.找出所有的key,遍歷所有的key集合,獲取key,通過get()方法獲取value
2.通過Map的EntrySet方法來把Key和Value輸入到Map的內部類Entry中,再調用Entry對象的getKey方法和getValue方法來遍歷輸出
可變參數
當參數不確定,但類型要一致,Java可以直接轉成數組
實參:(實參1,實參2,....)
形參:類型名...變量名
注意:可以在可變參數前添加別的形參,但不可以在后面加
就業(yè)第八天
異常:
概述:不正常,我們在代碼出現的編譯或者運行時的錯誤
異常包含了錯誤的類型、原因以及位置
體系結構:
Throwable(最頂層):
Error:出現的不能夠處理的嚴重問題
Exception:可以處理的問題,編譯時期的異常
RuntimeException:編譯時正常,運行時發(fā)生的異常
常見異常:
NullPointerException:空指針
ArrayIndexOutOfBoundException:數組指針越界
任何數字除以0都會拋出異常
異常的處理方式:
//第一種方式
捕獲
try{
存放可能發(fā)生的異常代碼
可以有多行代碼
}catch(異常類型 異常對象名){
對異常進行處理的代碼
也可以通過異常對象名獲取異常的信息
}finally{
用于釋放資源
清理垃圾
}
首先執(zhí)行try語句
發(fā)現異常,異常下面的代碼不執(zhí)行,跳入catch語句,catch語句結束后,try...catch結束
沒有異常,不執(zhí)行catch語句
處理多個異常
使用多個try...catch語句
使用一個try和多個catch語句
多個catch的順序
多個
平級沒有順序
有子父類,父類必須在后面
//第二種方式
拋出
在不想處理或沒有能力處理異常時,可以選擇拋出
關鍵字:throws,在方法的聲明處使用
定義格式:
方法名(參數列表) throws 異常類型1,異常類型2........{
}
JVM處理異常:
異常我們不處理,JVM會把異常的種類,原因還有把位置顯示在命令行,并且終止程序,異常后的代碼不再執(zhí)行
try...catch操作捕獲的異常
String getMessage();
返回異常原因
String toString();
返回異常類型
void printStackTrace();
輸出異常原因和類型,還有位置
異常分類
1.運行時期異常:RuntimeExceptipon的子類就是運行時期異常,可以自行處理或者不處理
2.編譯時期異常:
非RuntimeException ,編譯時期的一樣必須處理
兩種異常處理方式
throws:處理異常的一種方式將異常拋出,由調用者處理
throw:制造異常的方式,并且結束方法
注意
拋出(throws)
遞歸:大事化小,小事化了
注意:
1.遞歸一定要有出口
2.遞歸次數不宜過多
就業(yè)第九天
IO流
絕對路徑:固定不可變的路徑,以盤符開頭
相對路徑:相對于某個參照物,不以盤符開頭
FIle類
常用功能:
創(chuàng)建功能
boolean createNewFile():
創(chuàng)建新文件,返回是否創(chuàng)建成功
文件不存在的時候返回true并創(chuàng)建文件,存在的時候返回false
boolean mkdir():
創(chuàng)建目錄,返回是否成功
文件夾不存在的時候返回true并創(chuàng)建,存在的時候返回false
boolean mkdirs();
創(chuàng)建多級目錄,包括指定路徑中缺少的父級目錄,
當多級文件夾不存在時返回true并創(chuàng)建多級文件夾,存在返回false
判斷功能
boolean exists():
判斷文件或文件夾是否存在,存在true,否則false
boolean isAbsolute():
判斷File對象指向的路徑是否是絕對路徑,是true,否false
boolean isDirectory():
判斷File對象指向的是否是目錄,是true,否false
boolean isFile():
判斷File對象指向的是否是文件,是true,否false
boolean isHidden():
判斷File對象指向的路徑是否有隱藏屬性,是true,否false
獲取功能
String[] list():獲取當前路徑下所有文件和目錄的名稱,返回成一個字符串數組
File[] listFiles():獲取當前路徑下所有文件和目錄,返回成一個File類的對象數組
static File[] listRoots():返回當前電腦的所有盤符
刪除功能
boolean delete():
刪除文件或文件夾,返回是否成功
當指定文件或文件夾存在時刪除文件,返回true,不存在時返回false
注意:delete()方法刪除文件夾,文件夾下面不能有文件和文件夾
IO流分類
流向
輸入流 讀取數據 FileReader Reader
輸出流 寫出數據 FileWriter Writer
數據類型
字節(jié)流 字節(jié)輸入流 讀取數據 InputStream類
字節(jié)輸出流 寫出數據 OutputStream類
字符流 字符輸入流 讀取數據 Reader類
字符輸出流 寫出數據 Writer類
遞歸中
就業(yè)第十天
轉換流
OutputStreamWriter:字節(jié)輸出流轉字符輸出流
InputStreamReader:字節(jié)輸入流轉字符輸入流
打印流
PrintStream:字節(jié)打印流
PrintWriter:字符打印流
特點:
1.自動換行
2.輸出除了字節(jié)以外的任意類型
3.通過構造方法配置,實現自動刷新(調用println、printf或format才有用)
4.包裝流,不具備寫功能
5.可以把字節(jié)流轉換流字符輸出流
對象操作流:可以用于讀寫任意類型的對象
ObjectInputStream:對象輸入流
readObject
ObjectInputStream(InputStream in)
ObjectOutputStream:對象輸出流
writeObject
ObjectOutputStream(OutputStream out)
注意:使用對象輸出流寫出對象,只能用對象輸入流寫入
解決對于實現序列化接口黃色警告的問題
集合
Properties :表示一個持久的屬性集,屬性列表中每個鍵及對應值都是一個字符串
構造方法:
Properties
和IO流結合
1.void list(PrintWriter out)
2.void load(Reader reader)
3.void store(writer
屬性 配置 Map();
亂碼
編碼表
ASCII:美國標準碼
GB2312 ---GBK 國標和國標擴展碼
Unicode:萬國碼
UTF-8:Unicode的一種實現方式,長度可變的碼表,一個字符棧1or2or3個字節(jié)
ANSI:本地編碼表,根據系統(tǒng)決定編碼
原因
字符串編碼的轉換
標準輸入輸出流
public static final InputStream in;字節(jié)輸入流,用來讀取鍵盤錄入的數據
public static final OutputStream out;字節(jié)輸出流,將數據輸出到控制臺
本文版權歸黑馬程序員JavaEE學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:黑馬程序員JavaEE培訓學院
首發(fā):http://java.itheima.com/