1.1Java虛擬機
Java語言可移植性的關(guān)鍵在于Java編譯器輸出的并非標準可執(zhí)行代碼。Java編譯器會生成一組已優(yōu)化的指令,稱為字節(jié)碼bytecode)程序。字節(jié)碼是按規(guī)定格式排列的一系列字節(jié),稍后將會詳細解釋。字節(jié)碼程序由運行時系統(tǒng)(即JVM)進行解釋。因此在一個平臺上生成字節(jié)碼程序后,其他安裝了JVM的平臺就能運行該程序。
雖然不同平臺上的JVM各不相同,但上文做法是可行的。換句話說,在Unix工作站上編譯的Java程序能夠在PC或Mac上運行。只要按Java語言的標準形式編寫源代碼,然后編譯為字節(jié)碼程序,每個JVM都能將字節(jié)碼解釋為所在平臺對應(yīng)的本地調(diào)用(也就是解釋為指定處理器能夠識別的語言)。正是通過這種抽象形式,不同平臺上的各種操作系統(tǒng)能夠以相同的方式完成一些操作,如打印、文件訪問以及硬件操作。
字節(jié)碼的一個特點(也有人認為是一個缺點),就是字節(jié)碼在計算機上運行時并不是由處理器直接執(zhí)行的。字節(jié)碼程序是通過JVM運行的,由JVM解釋字節(jié)碼,因此Java是一 種解釋型語言(interpreted language)。
1.11JVM作為運行時執(zhí)行環(huán)境
JVM規(guī)范中定義了該轉(zhuǎn)換過程的內(nèi)部抽象架構(gòu),稍后將介紹該內(nèi)部架構(gòu)的各個組件。
從上層看來,由JVM加載類文件(經(jīng)過編譯的Java文件擴展名為.class, 稱為類文件)并用執(zhí)行引擎來執(zhí)行。執(zhí)行字節(jié)碼時,JVM通過本地方法與底層操作系統(tǒng)相互通信,由于使用了這種本地方法的實現(xiàn),因此特定的JVM實現(xiàn)與指定的平臺相關(guān)

1.12JVM運行時數(shù)據(jù)區(qū)
堆 棧 方法區(qū)? 寄存器? 運行時常
2? 序列化和反序列化詳解
? 網(wǎng)址: Java對象的序列化和反序列化Serializable - CSDN博客
? ? ? ? ? ? ? Java基礎(chǔ)學(xué)習(xí)總結(jié)——Java對象的序列化和反序列化 - 孤傲蒼狼 - 博客園
JAVA面試題
https://zhuanlan.zhihu.com/p/25725929
3 JAVA的基本數(shù)據(jù)類型
3.1 JAVA常量

3.2 JAVA變量

3.3 JAVA 變量的分配

3.4 JAVA局部變量與成員變量

3.5 JAVA數(shù)據(jù)類型劃分

4 JAVA數(shù)據(jù)類型詳解



參考?java基礎(chǔ)學(xué)習(xí)總結(jié)——基礎(chǔ)語法1 - 孤傲蒼狼 - 博客園
5 線程死鎖



5.1 線程死鎖的兩種解決方案
高層同步 ? 鎖定排序
5.2 ?線程分類(Deamon Thread)
守護線程 ? ? ? ? ? ?: Thread類的setDeammon方法傳遞的值為true
用戶線程 ? ? ? ? ? ?:?Thread類的setDeammon方法傳遞的值為false
setDeammon方法必須在start方法之前調(diào)用
區(qū)別:用戶線程會阻止JVM退出,守護線程則不會
? ? ? ? (一般JVM會在執(zhí)行完main()方法后退出,AWT是用戶線程,所以當窗口關(guān)閉,所有資源釋放后,JVM不會退出,此時可以用System.exit(0)使JVM強行退出)
守護線程通常作為持續(xù)運行的后臺任務(wù),并且不需要JVM在終止時執(zhí)行整理操作,例如進行垃圾收集線程(守護線程)。如果JVM推出前必須對線程執(zhí)行整理操作,那么該線程應(yīng)該為用戶線程,否則該線程適合作為監(jiān)控線程來運行。
注意:Main主程序是用戶線程,默認產(chǎn)生的線程都是用戶線程;