為什麼jdk1 7中switch中可以使用字串?

2021-10-07 16:19:52 字數 576 閱讀 5878

二話不說,先看一段demo:

public

class

demo}}

//這個輸出的結果是我是王小五

那麼為什麼會實現這個呢?底層到底是什麼呢?

帶著這兩個問題我們來看一下,想要很好的理解,我們來反編譯一下這段程式,如下:

public

class

demo

public

static

void

main

(string[

] args)

break

;case

29176112:if

(name.

equals

("王小五"))

}switch

(var3)

}}

我相信通過反編譯,大家都很清楚了吧,switch裡面是name.hashcode(),得出對應的雜湊值,那麼下面case比較的就是雜湊值了,這樣就實現了這個新特性,這個新特性從jdk1.7就開始可以使用,底層的原理就是這個了。

JDK1 8中的hashmap和JDK1 7的區別

1.資料插入的方式不同 jdk1.7用的是頭插法,而jdk1.8用的是尾插法,這是由於jdk1.7是用單鏈表進行的縱向延伸,當採用頭插法時會容易出現逆序且環形鍊錶死迴圈問題。但是在jdk1.8之後是因為加入了紅黑樹使用尾插法,能夠避免出現逆序且鍊錶死迴圈的問題。2.組成結構不同 jdk1.7的時候使...

myEclipse配置jdk1 7教程

位址 鏈結 密碼 wrmf 第二步 安裝jdk1.7 將 的壓縮包進行解壓,得到乙個jdk 7程式設計客棧u17 windows x64.exe的檔案,直接程式設計客棧雙擊執行,安裝完成。第三步 在專案上右鍵 properties,選擇j a build path,點程式設計客棧擊jre syste...

jdk1 7中HashMap死迴圈分析

在多執行緒環境下,使用hashmap進行put操作會引起死迴圈,導致cpu利用率接近100 hashmap在併發執行put操作時會引起死迴圈,是因為多執行緒會導致hashmap的entry鍊錶 形成環形資料結構,一旦形成環形資料結構,entry的next節點永遠不為空,就會產生死迴圈獲取entry。...