您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Java的熱門筆試試題有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據(jù)這篇文章可以有所收獲。
A.一個文件里可以同時存在兩個public修飾的類
B.構造函數(shù)可以被重寫(override)
C.子類不能訪問父類非public和protected修飾的屬性
D.final修飾的類可以被繼承
答案:C
一個Java源文件中最多只能有一個public類,當有一個public類時,源文件名必須與之一致,否則無法編譯,如果源文件中沒有一個public類,則文件名與類中沒有一致性要求。至于main()不是必須要放在public類中才能運行程序。
重寫是子類繼承父類后對父類的方法進行修改。方法名,參數(shù),返回值必須一樣。 不能重寫被標示為final的方法。如果不能繼承一個方法,則不能重寫這個方法。
擴展:重寫override,重載overload的區(qū)別
java的方法重載
就是在類中可以創(chuàng)建多個方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。調用方法時通過傳遞給它們的不同參數(shù)個數(shù)和參數(shù)類型來決定具體使用哪個方法,而且返回值類型可以相同也可以不相同,這也是面向對象的多態(tài)性。
java的方法重寫
父類與子類之間的多態(tài)性,對父類的函數(shù)進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類并不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫。方法重寫又稱方法覆蓋。
若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數(shù)表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。
子類函數(shù)的訪問修飾權限不能少于父類的;
重寫方法只能存在于具有繼承關系中,重寫方法只能重寫父類非私有的方法。
2,for(int x=0,y=0;(y!=0)&&(x<4);x++)循環(huán)的執(zhí)行次數(shù)是()
A.無限次
B.執(zhí)行4次
C.執(zhí)行3次
D.一次也不執(zhí)行
答案:D
y初始值為0,在整個for循環(huán)中,y的值不變,故判斷語句中的(y!=0)不成立,故一次也不執(zhí)行。
3,關于 JAVA 堆,下面說法錯誤的是( )
A.所有類的實例和數(shù)組都是在堆上分配內存的
B.對象所占的堆內存是由自動內存管理系統(tǒng)回收
C.堆內存由存活和死亡的對象,空閑碎片區(qū)組成
D.數(shù)組是分配在棧中的
答案:D
首先數(shù)組是分配在堆中的,故D的說法不正確。
Java堆的結構:JVM的堆是運行時數(shù)據(jù)區(qū),所有類的實例和數(shù)組都是在堆上分配內存。它在JVM啟動的時候被創(chuàng)建。對象所占的堆內存是由自動內存管理系統(tǒng)也就是垃圾收集器回收。堆內存是由存活和死亡的對象組成的。存活的對象是應用可以訪問的,不會被垃圾回收。死亡的對象是應用不可訪問尚且還沒有被垃圾收集器回收掉的對象。一直到垃圾收集器把這些對象回收掉之前,他們會一直占據(jù)堆內存空間。
4,在使用super 和this關鍵字時,以下描述正確的是()
A.在子類構造方法中使用super()顯示調用父類的構造方法;
super()必須寫在子類構造方法的第一行,否則編譯不通過
B.super()和this()不一定要放在構造方法內第一行
C.this()和super()可以同時出現(xiàn)在一個構造函數(shù)中
D.this()和super()可以在static環(huán)境中使用,包括static方法和static語句塊
答案:A
Java關鍵字this只能用于方法方法體內。當一個對象創(chuàng)建后,Java虛擬機(JVM)就會給這個對象分配一個引用自身的指針,這個指針的名字就是this。因此,this只能在類中的非靜態(tài)方法中使用,靜態(tài)方法和靜態(tài)的代碼塊中絕對不能出現(xiàn)this。
super關鍵和this作用類似,是被屏蔽的成員變量或者成員方法或變?yōu)榭梢?,或者說用來引用被屏蔽的成員變量和成員成員方法。
不過super是用在子類中,目的是訪問直接父類中被屏蔽的成員,注意是直接父類(就是類之上最近的超類)
5,下列語句哪一個正確()
A.Java程序經(jīng)編譯后會產(chǎn)生machine code
B.Java程序經(jīng)編譯后會產(chǎn)生byte code
C.Java程序經(jīng)編譯后會產(chǎn)生DLL
D.以上都不正確
答案:B
Java字節(jié)碼是Java源文件編譯產(chǎn)生的中間文件
java虛擬機是可運行java字節(jié)碼的假想計算機 java的跨平臺性也是相對與其他編程語言而言的 。
先介紹一下c語言的編譯過程:c的文件經(jīng)過C編譯程序編譯后生成windows可執(zhí)行文件exe文件然后在windows中執(zhí)行。
再介紹java的編譯過程:java的文件由java編譯程序將java字節(jié)碼文件就是class文件在java虛擬機中執(zhí)行。機器碼是由CPU來執(zhí)行的;Java編譯后是字節(jié)碼。
電腦只能運行機器碼。Java在運行的時候把字節(jié)碼變成機器碼。C/C++在編譯的時候直接編譯成機器碼
6,下列哪一種敘述是正確的()
A.a(chǎn)bstract修飾符可修飾字段、方法和類
B.抽象方法的body部分必須用一對大括號{ }包住
C.聲明抽象方法,大括號可有可無
D.聲明抽象方法不可寫出大括號
答案:D
abstract修飾符用來修飾類和成員方法
用abstract修飾的類表示抽象類,抽象類位于繼承樹的抽象層,抽象類不能被實例化。
用abstract修飾的方法表示抽象方法,抽象方法沒有方法體。抽象方法用來描述系統(tǒng)具有什么功能,但不提供具體的實現(xiàn)。
Abstract是Java中的一個重要關鍵字,可以用來修飾一個類或者一個方法。
修飾一個方法時,表示該方法只有特征簽名(signature),沒有具體實現(xiàn),而是把具體實現(xiàn)留給繼承該類的子類,所以不能有大括號。
7,下列說法正確的有()
A.class中的constructor不可省略
B.constructor必須與class同名,但方法不能與class同名
C.constructor在一個對象被new時執(zhí)行
D.一個class只能定義一個constructor
答案:C
這里可能會有誤區(qū),其實普通的類方法是可以和類名同名的,和構造方法唯一的區(qū)分就是,構造方法沒有返回值。
8,GC線程是否為守護線程()
答案:是
線程分為守護線程和非守護線程(即用戶線程)。
只要當前JVM實例中尚存在任何一個非守護線程沒有結束,守護線程就全部工作;只有當最后一個非守護線程結束時,守護線程隨著JVM一同結束工作。
守護線程最典型的應用就是 GC (垃圾回收器)
9,關于sleep()和wait(),以下描述錯誤的一項是( )
A. sleep是線程類(Thread)的方法,wait是Object類的方法;
B. sleep不釋放對象鎖,wait放棄對象鎖;
C. sleep暫停線程、但監(jiān)控狀態(tài)仍然保持,結束后會自動恢復;
D. wait后進入等待鎖定池,只有針對此對象發(fā)出notify方法后獲得對象鎖進入運行狀態(tài)。
答案:D
sleep是線程類(Thread)的方法,導致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復。調用sleep不會釋放對象鎖。
wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態(tài)。
10,方法resume()負責恢復哪些線程的執(zhí)行( )
A,通過調用stop()方法而停止的線程。
B,通過調用sleep()方法而停止的線程。
C,通過調用wait()方法而停止的線程。
D,通過調用suspend()方法而停止的線程。
答案:D
suspend可以掛起一個線程,就是把這個線程暫停了,它占著資源,但不運行,用resume是恢復掛起的線程,讓這個線程繼續(xù)執(zhí)行下去。
看完上述內容,你們對Java的熱門筆試試題有哪些有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。