本文章將會提到 JVM JRE JAVAC變異文件
歡迎大家來補充,有興趣可以交流探討,經(jīng)過兩個小時的總結(jié),請閱
1、JVM就是運行Java程序的虛擬機。簡單說JRE包含JVM,JVM是運行Java程序的核心虛擬機,而運行Java程序不僅需要核心虛擬機。還需要其他的類加載器、字節(jié)碼校驗器以及大量的基礎(chǔ)類庫。JRE除了包含JVM之外,還包含運行Java程序的其他環(huán)境支持
2、Javac變異文件只需要指定存放目標文件的位置即可,無需指定字節(jié)碼文件的文件名。因為javac編譯后生成的字節(jié)碼文件有默認的文件名,文件名總是以源文件所定義的類名作為主文件名的,以class作為后綴名。這意味著如果一個源文件里定義了多個類,將編譯生成多個字節(jié)碼文件。
當然指定目標文件存放的位置,加上-d選項即可
如我在自己電腦的編譯批處理文件項目的命令是:
3、一個Java源文件可以包含多個類定義,但最多只能包含一個public類定義;
如果Java源文件里包含public類定義,則該源文件名必須與這個public類的類名相同
4、如果Java解釋器直接運行一個Java類,則這個Java類必須包含main方法,這個main方法必須使用public和static來修飾,必須使用void生命方法的返回值,而且該方法的參數(shù)類型只能是一個字符串數(shù)組,而不能是其他形式的參數(shù)。
對于這個main方法而言,前面的public和static修飾符的位置可以互換,但其他部分則固定
5、可以通過調(diào)用對象的finalize方法或System.gc()等方法來建議系統(tǒng)進行垃圾回收,但這種調(diào)用僅僅是建議,依然不能精確地控制垃圾回收機制的執(zhí)行
6、面向?qū)ο蠓椒ň哂腥齻€基本特征:封裝,繼承,和多態(tài)
其中耿莊指的是將對象的實現(xiàn)細節(jié)隱藏起來,然后通過一些公用方法暴露該對象的功能;
繼承是面向?qū)ο髮崿F(xiàn)軟件復(fù)用的重要手段,當子類繼承父類后,子類作為一種特殊的父類,將直接獲得父類的屬性和方法;
多態(tài)指的是子類對象可以直接賦給父類變量,但運行的時候依然表現(xiàn)出子類的行為特征,這意味著同一個類型的對象在執(zhí)行同一個方法時,可能表現(xiàn)出多種行為特征。
7、在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機制稱為繼承。繼承具有傳遞性。繼承可分為單繼承(一個繼承只允許有一個直接父類,即類登記為樹形結(jié)構(gòu));與多繼承(一個類允許有多個直接父類),由于多繼承可能引起繼承結(jié)構(gòu)的混亂,而且會大大降低程序的可理解性,所以Java不支持多繼承
8、數(shù)組引用變量只是一個引用,這個引用變量可以指向任何有效的內(nèi)存,只有當該引用指向有效內(nèi)存后,才可通過數(shù)組變量來訪問數(shù)組元素。與所有引用變量的相同的是,引用變量是訪問真實對象的根本方式。也就是說,如果我們希望在程序中訪問數(shù)組對象本身,則只能通過這個數(shù)組的引用變量來訪問它。
實際的數(shù)組對象本存儲在堆heap內(nèi)存中;如果引用該數(shù)組對象的數(shù)組引用變量是一個局部變量,那么它被存儲在棧stack內(nèi)存中。
當我們看一個數(shù)組時,一定要把數(shù)組分成兩個部分:一部分是數(shù)組引用,也就是在代碼中定義的數(shù)組引用變量;還有一部分是實際的數(shù)組對象,這部分是在堆內(nèi)存里運行的,通常無法實際的訪問它,只能通過數(shù)組引用變量來訪問

版權(quán)聲明:本文為簡書號主「小寧學(xué)JAVA」的原創(chuàng)文章