???????
??????????????java???????????????????????????????java????????????????java?????????????????????????????????????????С?java???????????jvm????????棬????????????jvm?????????μ???????????????????
??????????д??java???????????class????????????е???????????????????????class??????????棬????????У?顢???????????????????γ?????java?????“????”??java??????????class——>java???????“????”??java????????????????????
?????????????
??????????????????????????????jvm??????????????
??????????????????????????????????????????????????
??????????????????????????ε??
????· ????
????· ???
????· ???
????· ????
????· ?????
????· ???
????· ж??
????????????????????????????????Σ??????
?????????????????????????????????????????????????????????????С?????java??????淶????????????????5????????????????????????????????????????????????????????????????????????????????????
????· ????new??getstatic??putstatic??invokestatic??4????????????????????н??г??????????????????4????????????????????
???????new??????????????????
????????????t????Σ???final???Σ??????????????????????????γ????????
?????????????????????????
????· ?????????????????г??????????????????
????· ????????????????????????????г?????????????????????
????· ?????????????????main()????????(?????)????????
????· JDK1.7??????????????MethodHandle???????????REF_getStatic??REF_putStatic??REF_invokeStatic?????????????????????????????????н??г?????????????????????г??????
?????????????5???????java??????淶???????????“???????”???????????????????????????е???????????漸?????????????????????????á?
??????????????????????
????· ???????????????????ε??????????????
????· ?????????????????????????????
????· ??????????λ??????????????????????????????????????
????????????????????????н??????????????????????????????????????5??????????????????????
????· ?????????????????????????丸???????
?????????????
????????
??????????????????????Σ??????????????
????· ????????????????????????????????
????· ????????????????????????????????????????????
????· ????????????????????????class?????????????????????????????????
???????????????????????????????????????????????????class?????????????????jar?????????????????????????????????????????????ɡ?
???????
??????????????????????????????????????????????????Σ??????????????????
???????class????????“α??”???????????????????? ?????????е?????Σ?????????????????????
?????????????Σ????????????????У?
????· ?????????
????????????0xCAFEBABE???
????????汾??????????????????????????????Χ???
??????????????????в??????????????
?????????????????????????????????????????????
????CONSTANT_Utf8_info??????????в?????UTF-8?????????
????Class????е????????????????????б?????????????????
????and so on
????· ????????
?????????????и?????Object??
????????????????????????е???final???Σ?
??????????????????????????????????е????????з???
???????е???κ??????????ì??(???????????????)
????· ????????
??????????????????????????????????????ж??????????????磺???????з??????int??????????????Long??????????????????С?
??????????????????????????????????
??????????????е????????????Ч??
????· ???????????
??????????????????????????????????????????????????
?????????????????????????????????????????????????????????????
?????????????е?????Ρ?????????????private??public protected??default??????????????????
???????
?????????????????????????沢???ó???????Щ????????????????з??????????????з????????????δ????????Щstatic???ε??????????????????????
???????????????????????????????????????????????????????????????????????0???
???????磺
????public static int a = 10;
???????????д???????????????a??????0?????????????10??
?????????????????β??????????е??????????????δ?????????????
?????????и?????????????final???ε??????????????????????????????????
????public static final int a = 10;
??????????????λ??????????10???
????????
???????????Σ????????????????????е??????????????????á?
??????????????CLASS?????????CONSTANT_CLASS_INFO?? CONSTANT_FIELDREF_INTO?? CONSTANT_METHODREF_INFO???????????????
???????????????Symbolic References?????????????????????????????????????????κ???????????????????????????????????????У??????????沼??????
??????????????Direct References?????????????????????????????????????????????????λ???????????????????沼??????
????????????????????/??????Σ???????????????????????y??С??????????????CONSTANT_CLASS_INFO??CONSTANT_FIELDREF_INFO??CONSTANT_METHODREF_INFO??
????CONSTANT_INTERFACEMETHODREF_INFO?????????
?????????о?????????д???????????綨?????????A??????????class????????????????????????????????????????A?????????Σ??????????????????????????A??class???????????????????????????????????????????????????????????A??class????????á???????????
?????????
??????????????????????????????????
????public static int a = 10;
?????a??????0???? ????????????????????a??????10 ??? ?????????????e????a??????10???
?????????????У??????????????????????????????????????Σ?????????????????????????????????
?????????????Σ??????????????<clinit>()??????????????????棬???????????????????????????????(a = 10)???????????(static{})?е?????????ɡ?
????????????<clinit>()???????????丸??????????<clinit>()??
???????<clinit>()???????????????????о?????飬???ж??????????????????????????????????????????
????????????????????棬????????????????????????????????????г??????????
????ж??
???????????????????????????????????? ??????????ú?ж?????ò?????????ж????????????????е????????Class????????????????????????Class??????????????????????????????????????ж????????????????????????
????????????????Java????????????????????????????????????????????У???????ж???
????Java??????????????????????????????????????????????????????????
????Java???????????????????Щ?????????????Щ???????????????????????????????Class?????????ЩClass?????????????
???????????????????????????????????ж????
????????????????????????????????null?????????????????????????class????????????null???????и????????????????????????????????????????????????????????????????????????????????????ж???????????????????????????????????Java????????????????????μ??????????class????
???????????????????????????hash???????????ж??????????class?????