第十五課 Map補充,異常,執行緒

2021-10-08 16:11:56 字數 3180 閱讀 5332

常用的迭代方式:

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 ...