Java里面的静态代码块
問(wèn)題:Java里面的靜態(tài)代碼塊
I was looking over some code the other day and I came across:
前幾天我在看一些代碼時(shí)發(fā)現(xiàn):
我是c++轉(zhuǎn)來(lái)的,我不知道為啥要這樣干。這個(gè)代碼也編譯成功了,沒(méi)出錯(cuò)誤。這里的"static"代碼塊是啥啊?
回答一
它是一個(gè)靜態(tài)初始化器。它在類被加載時(shí)執(zhí)行(準(zhǔn)確地說(shuō)應(yīng)該是初始化,但你通常不會(huì)注意到其中的區(qū)別)。
它也可以被看成是一個(gè)“類的構(gòu)造函數(shù)”。
請(qǐng)注意,還有一些實(shí)例初始化器,它們看起來(lái)相同,但是它們沒(méi)有static關(guān)鍵字。當(dāng)創(chuàng)建對(duì)象的實(shí)例時(shí),除了構(gòu)造函數(shù)中的代碼外,還會(huì)運(yùn)行這些代碼。
回答二
它是一個(gè)靜態(tài)初始化器。它在類加載時(shí)執(zhí)行和是進(jìn)行靜態(tài)變量初始化的地方。
來(lái)自http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html
一個(gè)類可以有任意數(shù)量的靜態(tài)初始化塊,它們可以出現(xiàn)在類的任何地方。系統(tǒng)保證在運(yùn)行時(shí)靜態(tài)初始化的代碼塊按照它們?cè)谠创a中出現(xiàn)的順序被調(diào)用。
如果你有一個(gè)類,帶有實(shí)現(xiàn)了查找功能的靜態(tài)的map,它看起來(lái)就是這樣的:
class MyClass {static Map<Double, String> labels;static {labels = new HashMap<Double, String>();labels.put(5.5, "five and a half");labels.put(7.1, "seven point 1");}//... }它是非常有用的。因?yàn)樯厦娴撵o態(tài)域不能使用labels = … 來(lái)初始化,它需要以某種方式調(diào)用put方法。
文章翻譯自Stack Overflow:https://stackoverflow.com/questions/2943556/static-block-in-java
總結(jié)
以上是生活随笔為你收集整理的Java里面的静态代码块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到爸爸出轨代表什么
- 下一篇: 两个日期相差月份 java_Java获取