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