關(guān)注Linux小管家,100套Linux原創(chuàng)面試試題免費領(lǐng)取,看文末!
問題:Java支持哪種參數(shù)傳遞類型?
答案:Java參數(shù)都是進(jìn)行傳值。對于對象而言,傳遞的值是對象的引用,也就是說原始引用和參數(shù)引用的那個拷貝,都是指向同一個對象。
問題:對象封裝的原則是什么?
答案:封裝是將數(shù)據(jù)及操作數(shù)據(jù)的代碼綁定到一個獨立的單元。這樣保障了數(shù)據(jù)的安全,防止外部代碼的錯誤使用。對象允許程序和數(shù)據(jù)進(jìn)行封裝,以減少潛在的干涉。對封裝的另一個理解是作為數(shù)據(jù)及代碼的保護(hù)層,防止保護(hù)層外代碼的隨意訪問。
問題:你怎么理解變量?
答案:變量是一塊命名的內(nèi)存區(qū)域,以便程序進(jìn)行訪問。變量用來存儲數(shù)據(jù),隨著程序的執(zhí)行,存儲的數(shù)據(jù)也可能跟著改變。
問題:數(shù)值提升是什么?
答案:數(shù)值提升是指數(shù)據(jù)從一個較小的數(shù)據(jù)類型轉(zhuǎn)換成為一個更大的數(shù)據(jù)類型,以便進(jìn)行整型或者浮點型運(yùn)算。在數(shù)值提升的過程中,byte,char,short值會被轉(zhuǎn)化成int類型。需要的時候int類型也可能被提升成long。long和float則有可能會被轉(zhuǎn)換成double類型。
問題:Java的類型轉(zhuǎn)化是什么?
答案:從一個數(shù)據(jù)類型轉(zhuǎn)換成另一個數(shù)據(jù)類型叫做類型轉(zhuǎn)換。Java有兩種類型轉(zhuǎn)換的方式,一個是顯式的類型轉(zhuǎn)換,一個是隱式的。
問題:main方法的參數(shù)里面,字符串?dāng)?shù)組的第一個參數(shù)是什么?
答案:數(shù)組是空的,沒有任何元素。不像C或者C++,第一個元素默認(rèn)是程序名。如果命令行沒有提供任何參數(shù)的話,main方法中的String數(shù)組為空,但不是null。
問題:怎么判斷數(shù)組是null還是為空?
答案:輸出array.length的值,如果是0,說明數(shù)組為空。如果是null的話,會拋出空指針異常。
問題:程序中可以允許多個類同時擁有都有main方法嗎?
答案:可以。當(dāng)程序運(yùn)行的時候,我們會指定運(yùn)行的類名。JVM只會在你指定的類中查找main方法。因此多個類擁有main方法并不存在命名沖突的問題。
問題:靜態(tài)變量在什么時候加載?編譯期還是運(yùn)行期?靜態(tài)代碼塊加載的時機(jī)呢?
答案:當(dāng)類加載器將類加載到JVM中的時候就會創(chuàng)建靜態(tài)變量,這跟對象是否創(chuàng)建無關(guān)。靜態(tài)變量加載的時候就會分配內(nèi)存空間。靜態(tài)代碼塊的代碼只會在類第一次初始化的時候執(zhí)行一次。一個類可以有多個靜態(tài)代碼塊,它并不是類的成員,也沒有返回值,并且不能直接調(diào)用。靜態(tài)代碼塊不能包含this或者super,它們通常被用初始化靜態(tài)變量。
問題:一個類能擁有多個main方法嗎?
答案:可以,但只能有一個main方法擁有以下簽名:
否則程序?qū)o法通過編譯。編譯器會警告你main方法已經(jīng)存在。
歡迎關(guān)注公眾號:Linux小管家,100套原創(chuàng)Linux面試試題,包含大量Linux技術(shù)文章,免費領(lǐng)取!
每天只限一百名。速快速絕。
(轉(zhuǎn)載公眾號Linux小管家)