JAVA學(xué)習(xí)

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ù)類型詳解



全球的文字放到計算機里面表示全是0和1,Unicode是統(tǒng)一了全世界國家文字的一種編碼方式,用這樣的編碼可以把全世界國家的文字連接在一起。Unicode編碼又分為兩種,一種是Utf-8,另一種是Utf-16。JAVA所采用的是Utf-16,每一個字符占2個字節(jié),任何國家的文字放到Unicode里面都是占2個字節(jié)。


C語言編譯好的程序為什么不能移植,如把.exe文件放到Linux下是執(zhí)行不了的,一個很大很大的原因在于C語言定義的變量在不同的操作系統(tǒng)上所占的大小是不一樣的,聲明一個int類型的變量,在Windows下面占32位,但放到Linux下面就有可能只占16位,那么這時候很可能表示的大小就不一樣了,在Windows下聲明一個很大的數(shù),在Linux下面很可能就會溢出。因此這就是C語言為什么在編譯完成之后不能移植的原因。

參考?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)生的線程都是用戶線程;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容