一個Java源文件中最多隻能有一個公共類

一個Java源文件中最多隻能有一個公共類

 

一個Java源文件中可以有多個類,但是最多隻能有一個用public修飾的類,也可以沒有一個用public修飾的類。

 

 當這個源文件中有一個public修飾的類時,源文件的名稱必須和public修飾的類的類名完全一致(區分大小寫)。爲什麼這時的取名要完全一致呢? 

 

很簡單,因爲jvm虛擬機爲了提高查找類的速度,使用import語句導入的時候,只會導入對應空間的文件名所對應的class文件,而public文件是大家都要使用的,因此直接導入這個類名對應的class文件即可。(如果編譯單元中包含了public類,那麼該類對應的字節碼文件當需要被類加載器加載的,這時候就需要讓類加載器知道該字節碼文件的位置,所以就要確保該類與Java文件名稱一致。同時,如果有兩個public類在同一個文件中,而一個文件只能有一個名稱,故兩個public類的名稱就不能同時和文件名一樣,這就造成至少其中有一個public類在編譯的時候編譯不通過,產生類似的提示(對於一個public類,它是可以被項目中任何一個類所引用的,只需在使用它前import一下它所對應的class文件即可,將類名與文件名一一對應就可以方便虛擬機在相應的路徑(包名)中找到相應的類的信息。如果不這麼做的話,就很難去找,而且開銷也會很大)。)

 

 當這個源文件中一個public修飾的類都沒有時,源文件的名稱可以不一致,但必須符合命名規則。這裏爲什麼可以不一致呢?

 

Java編譯器在編譯的時候,如果整個Java文件(編譯單元)都沒有public類(對外的公開接口類),類加載器子就無需從這方面直接去加載該編譯單元產生的所有的字節碼文件(.class文件),那麼也就是無需去尋找編譯後字節碼文件存放位置。而類名和文件名一致是爲了方便虛擬機在相應的路徑中找到相應的類所對應的字節碼文件。所以在沒有public類的Java文件中,文件名和類名都沒什麼聯繫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章