更新時(shí)間:2020-07-08 15:33:31 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2583次
1.什么是Java虛擬機(jī)(JVM)?為什么Java被稱(chēng)作是“平臺(tái)無(wú)關(guān)的編程語(yǔ)言”?
Java虛擬機(jī)是一個(gè)可以執(zhí)行Java字節(jié)碼的虛擬機(jī)進(jìn)程。Java源文件被編譯成能被Java虛擬機(jī)執(zhí)行的字節(jié)碼文件。
Java被設(shè)計(jì)成允許應(yīng)用程序可以運(yùn)行在任意的平臺(tái),而不需要程序員為每一個(gè)平臺(tái)單獨(dú)重寫(xiě)或者是重新編譯。Java虛擬機(jī)讓這個(gè)變?yōu)榭赡埽驗(yàn)樗赖讓佑布脚_(tái)的指令長(zhǎng)度和其他特性。
2.JDK、JRE、JVM分別是什么關(guān)系?
JDK即為Java開(kāi)發(fā)工具包,包含編寫(xiě)Java程序所必須的編譯、運(yùn)行等開(kāi)發(fā)工具以及JRE。開(kāi)發(fā)工具如:用于編譯Java程序的javac命令、用于啟動(dòng)JVM運(yùn)行Java程序的Java命令、用于生成文檔的Javadoc命令以及用于打包的jar命令等等。
JRE即為Java運(yùn)行環(huán)境,提供了運(yùn)行Java應(yīng)用程序所必須的軟件環(huán)境,包含有Java虛擬機(jī)(JVM)和豐富的系統(tǒng)類(lèi)庫(kù)。系統(tǒng)類(lèi)庫(kù)即為Java提前封裝好的功能類(lèi),只需拿來(lái)直接使用即可,可以大大的提高開(kāi)發(fā)效率。
JVM即為Java虛擬機(jī),提供了字節(jié)碼文件(.class)的運(yùn)行環(huán)境支持。簡(jiǎn)單說(shuō),就是JDK包含JRE包含JVM。
3.Java支持的數(shù)據(jù)類(lèi)型有哪些?
Java支持的數(shù)據(jù)類(lèi)型包括基本數(shù)據(jù)類(lèi)型和引用類(lèi)型。基本數(shù)據(jù)類(lèi)型如下。
整數(shù)值型:byte,short,int,long
字符型:char
浮點(diǎn)類(lèi)型:float,double
布爾型:boolean
整數(shù)默認(rèn)int型,小數(shù)默認(rèn)是double型。Float和long類(lèi)型的必須加后綴。比如float f=100f。
首先知道String是引用類(lèi)型不是基本類(lèi)型,引用類(lèi)型聲明的變量是指該變量在內(nèi)存中實(shí)際存儲(chǔ)的是一個(gè)引用地址,實(shí)體在堆中。引用類(lèi)型包括類(lèi)、接口、數(shù)組等。String類(lèi)還是final修飾的。
4.什么是自動(dòng)拆裝箱?
自動(dòng)裝箱和拆箱就是基本類(lèi)型和引用類(lèi)型之間的轉(zhuǎn)換,至于為什么要轉(zhuǎn)換,因?yàn)榛绢?lèi)型轉(zhuǎn)換為引用類(lèi)型后,就可以new對(duì)象,從而調(diào)用包裝類(lèi)中封裝好的方法進(jìn)行基本類(lèi)型之間的轉(zhuǎn)換或者toString(當(dāng)然用類(lèi)名直接調(diào)用也可以,便于一眼看出該方法是靜態(tài)的),還有就是如果集合中想存放基本類(lèi)型,泛型的限定類(lèi)型只能是對(duì)應(yīng)的包裝類(lèi)型。
5.什么是面向?qū)ο螅?/strong>
面向?qū)ο笫且环N思想,世間萬(wàn)物都可以看做一個(gè)對(duì)象,這里只討論面向?qū)ο缶幊蹋∣OP),Java是一個(gè)支持并發(fā)、基于類(lèi)和面向?qū)ο蟮挠?jì)算機(jī)編程語(yǔ)言,面向?qū)ο筌浖_(kāi)發(fā)具有以下優(yōu)點(diǎn):代碼開(kāi)發(fā)模塊化,更易維護(hù)和修改;代碼復(fù)用性強(qiáng);增強(qiáng)代碼的可靠性和靈活性;增加代碼的可讀性。
6.面向?qū)ο蟮乃拇蠡咎匦裕?/strong>
抽象:提取現(xiàn)實(shí)世界中某事物的關(guān)鍵特性,為該事物構(gòu)建模型的過(guò)程。對(duì)同一事物在不同的需求下,需要提取的特性可能不一樣。得到的抽象模型中一般包含:屬性(數(shù)據(jù))和操作(行為)。這個(gè)抽象模型我們稱(chēng)之為類(lèi),對(duì)類(lèi)進(jìn)行實(shí)例化得到對(duì)象。
封裝:封裝可以使類(lèi)具有獨(dú)立性和隔離性,保證類(lèi)的高內(nèi)聚。只暴露給類(lèi)外部或者子類(lèi)必須的屬性和操作。類(lèi)封裝的實(shí)現(xiàn)依賴(lài)類(lèi)的修飾符(public、protected和private等)。
繼承:對(duì)現(xiàn)有類(lèi)的一種復(fù)用機(jī)制。一個(gè)類(lèi)如果繼承現(xiàn)有的類(lèi),則這個(gè)類(lèi)將擁有被繼承類(lèi)的所有非私有特性(屬性和操作)。這里指的繼承包含:類(lèi)的繼承和接口的實(shí)現(xiàn)。
多態(tài):多態(tài)是在繼承的基礎(chǔ)上實(shí)現(xiàn)的。多態(tài)的三個(gè)要素:繼承、重寫(xiě)和父類(lèi)引用指向子類(lèi)對(duì)象。父類(lèi)引用指向不同的子類(lèi)對(duì)象時(shí),調(diào)用相同的方法,呈現(xiàn)出不同的行為,就是類(lèi)多態(tài)特性。多態(tài)可以分成編譯時(shí)多態(tài)和運(yùn)行時(shí)多態(tài)。
抽象、封裝、繼承和多態(tài)是面向?qū)ο蟮幕A(chǔ)。
7.&與&&的區(qū)別?
&運(yùn)算符有兩種用法:(1)按位與,(2)邏輯與。&&運(yùn)算符是短路與運(yùn)算。
邏輯與跟短路與的差別是非常巨大的,雖然二者都要求運(yùn)算符左右兩端的布爾值都是true整個(gè)表達(dá)式的值才是true。&&之所以稱(chēng)為短路運(yùn)算是因?yàn)椋绻?amp;&左邊的表達(dá)式的值是false,右邊的表達(dá)式會(huì)被直接短路掉,不會(huì)進(jìn)行運(yùn)算。
很多時(shí)候我們可能都需要用&&而不是&,例如在驗(yàn)證用戶(hù)登錄時(shí)判定用戶(hù)名不是null而且不是空字符串,應(yīng)當(dāng)寫(xiě)為:
1username!=null&&!username.equals(“”)
二者的順序不能交換,更不能用&運(yùn)算符,因?yàn)榈谝粋€(gè)條件如果不成立,根本不能進(jìn)行字符串的equals比較,否則會(huì)產(chǎn)生NullPointerException異常。
注意:邏輯或運(yùn)算符(|)和短路或運(yùn)算符(||)的差別也是如此。
8.什么是值傳遞和引用傳遞?
值傳遞是對(duì)基本型變量而言的,傳遞的是該變量的一個(gè)副本,改變副本不影響原變量。
引用傳遞一般是對(duì)于對(duì)象型變量而言的,傳遞的是該對(duì)象地址的一個(gè)副本,并不是原對(duì)象本身。一般認(rèn)為,Java內(nèi)的傳遞都是值傳遞,Java中實(shí)例對(duì)象的傳遞是引用傳遞。
9.是否可以在static環(huán)境中訪(fǎng)問(wèn)非static變量?
static變量在Java中是屬于類(lèi)的,它在所有的實(shí)例中的值是一樣的。當(dāng)類(lèi)被Java虛擬機(jī)載入的時(shí)候,會(huì)對(duì)static變量進(jìn)行初始化。如果你的代碼嘗試不用實(shí)例來(lái)訪(fǎng)問(wèn)非static的變量,編譯器會(huì)報(bào)錯(cuò),因?yàn)檫@些變量還沒(méi)有被創(chuàng)建出來(lái),還沒(méi)有跟任何實(shí)例關(guān)聯(lián)上。
10.Java中的方法覆蓋(Overriding)和方法重載(Overloading)是什么意思?
Java中的方法重載發(fā)生在同一個(gè)類(lèi)里面兩個(gè)或者是多個(gè)方法的方法名相同但是參數(shù)不同的情況。與此相對(duì),方法覆蓋是說(shuō)子類(lèi)重新定義了父類(lèi)的方法。方法覆蓋必須有相同的方法名,參數(shù)列表和返回類(lèi)型。覆蓋者可能不會(huì)限制它所覆蓋的方法的訪(fǎng)問(wèn)。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java基礎(chǔ)測(cè)試面試題,面試官必問(wèn)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743