常用的迭代方式:
set> entryset(): key-value封裝成entry
set keyset(): 遍歷key
collection values(): 遍歷value
hashmap: key無序, 並且不重複
hashset 就是value一樣的 hashmap
treemap: key排好序的
linkedhashmap: key有序的
hashtable 和 hashmap 有什麼區別?
hashtable:底層陣列+鍊錶實現,無論key還是value都不能為null,執行緒安全,實現執行緒安全的方式是在修改資料時鎖住整個hashtable,效率低
hashmap:底層陣列+鍊錶實現,可以儲存null鍵和null值,執行緒不安全
linkedhashmap 和 hashmap 有什麼區別?
linkedhashmap是繼承於hashmap,是基於hashmap和雙向鍊錶來實現的。
hashmap無序;linkedhashmap有序,可分為插入順序和訪問順序兩種。如果是訪問順序,那put和get操作已存在的entry時,都會把entry移動到雙向鍊錶的表尾
linkedhashmap訪問資料,還是跟hashmap一樣使用的entry的方式,雙向鍊錶只是為了保證順序。
linkedhashmap是執行緒不安全的。
concurrenthashmap 和 hashtable 和 hashmap有什麼區別?
不可以有null鍵,執行緒安全,原子操作。
runtimeexception -> 執行時異常 [可以不需要處理]
arrayindexoutofbound***ception
classcastexception
nullpointerexception
已檢查異常 [必須要處理的異常]
parseexception
ioexception
unsupportedencodingexception
throwable: 可丟擲的
執行時異常: 可以不處理, 也可以處理, 也叫未檢查異常
已檢查異常: 必須處理, 也叫編譯時異常
處理異常的方法:
try - catch : 捕獲異常
throws : 丟擲異常
具體步驟:
1.遇到未處理的執行時異常, 程式終止, 並且列印錯誤棧路徑
2.用try-catch捕獲異常, 注意:
a. 可能出現異常的**, 必須寫在try中
b. try 後面 必須有至少乙個 catch **塊
可以有乙個 finally **塊
c. try**塊中的**出現異常, 程式不會終止,
try中在出現異常的那行**之後的所有語句都不會執行,
catch中 是為了出現異常後準備的**
d. 乙個try後面可以跟多個catch捕獲不同的異常
多個catch一定是父型別異常放在子型別異常後面
無關的異常型別, 順序不作要求
e. catch中定義的是父類異常, 那麼可以將父類所有的子類異常一起捕獲
f. try-catch 可以巢狀
g. finally 無論有沒有出現異常, 都會執行到的語句塊
即使在try 或者 catch 寫了return, 也會執行到finally
finally 掃尾工作, 比如用來釋放資源
3.throws: 丟擲異常
產生異常的情況: 1.**有誤, 執行會主動丟擲異常
2.手動丟擲異常物件
throws 宣告在方法上, 等同於將異常交給方法呼叫者繼續處理
4.異常處理的原則:
自己能解決的, 就自己解決, try-catch
自己不能解決的, 再向外丟擲, throws
5.自定義異常
class myexception extends exception: 已檢查異常
class myexception extends runtimeexception: 執行時異常
6.常用異常api
構造方法 new xxexception(string message): message就是異常的資訊
e.printstacktrace(): 列印異常的棧路徑
e.getmessage(): 獲得異常資訊
下面展示一些 `內聯**片`。
// a code block
var foo = 'bar';
public
class
exceptiondemo
catch
(arrayindexoutofbound***ception e)
catch
(nullpointerexception e)
finally
system.out.
println
("try-catch結束了");
}public
static
voidm1(
);system.out.
println
(arr[2]
);}public
static
voidm2(
)}
執行緒的父類:thread
程式:安裝的軟體
程序:在執行的程式
執行緒:程序中多個同時執行的任務
開啟多執行緒任務: 建立多個執行緒物件 thread
1.自定義執行緒類, 繼承 thread -> 重寫run方法-> 建立執行緒物件 -> start() 開啟執行緒
2.自定義任務類, 實現了runnable介面 -> 重寫run方法-> 建立任務物件, 通過任務物件, 構造執行緒物件-> start() 開啟執行緒
下面展示一些內聯**片
。
// a code block
var foo = 'bar';
public
class
mythread1
extends
thread}}
public
class
mythread2
implements
runnable
}}
C 基礎學習第十五課 異常處理
10,異常處理 1,定義 異常處理就是處理程式中的錯誤 2,基本思想 讓乙個函式在發現了自己無法處理的錯誤時,丟擲 throw 乙個異常,然後它的 直接或間接 呼叫者可以吹這個問題 即將問題檢測和問題處理分離 3,異常基本語法 1,丟擲異常使用throw 2,捕獲異常使用try catch thro...
IO流第十五課,總結
一 步驟 建立檔案源,也就是路徑 選擇輸入 輸出流 操作 讀取 寫出 釋放資源 二 流 節點流 離資料源程式最近的流 1 節點流 可以處理一切檔案的複製 拷貝 1 輸入流 inputstream fileinputstream bytearrayinputstream 操作 read 位元組陣列 中...
第十五課 儲存與狀態
1.v0 v0 vi v 0 1 e t rc 電容真正儲存的是電荷,但對於乙個線性電容來說,它儲存的也是電壓,稱其為state。狀態 將來所需的所有輸入的彙總 電容的狀態就是電壓 vi 在零時刻以前的值無關緊要 電容電壓的未來值 是 電容初始狀態和未來時間輸入變化 的函式 vc t f vc 0 ...