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