1、String是最基本的數(shù)據(jù)類(lèi)型嗎?
答:NO。Java一共又8個(gè)基礎(chǔ)的數(shù)據(jù)類(lèi)型分別為:byte、short、int、long、float、double、char、boolean;除了基本類(lèi)型(primitive type),其余的都是引用類(lèi)型(reference type),Java 5以后引入的枚舉類(lèi)型也算是一種比較特殊的引用類(lèi)型。
-----------------------------------------------------------------------------------------------------------------------------------------
2、Java有沒(méi)有g(shù)oto?
答:沒(méi)有。(根據(jù)James Gosling(Java之父)編寫(xiě)的《The Java Programming Language》一書(shū)的附錄中給出了一個(gè)Java關(guān)鍵字列表,其中有g(shù)oto和const,但是這兩個(gè)是目前無(wú)法使用的關(guān)鍵字,因此有些地方將其稱(chēng)之為保留字,其實(shí)保留字這個(gè)詞應(yīng)該有更廣泛的意義,因?yàn)槭煜語(yǔ)言的程序員都知道,在系統(tǒng)類(lèi)庫(kù)中使用過(guò)的有特殊意義的單詞或單詞的組合都被視為保留字)
-----------------------------------------------------------------------------------------------------------------------------------------
3、&和&&的區(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ě)為:username != null && !username.equals(""),二者的順序不能交換,更不能用&運(yùn)算符,因?yàn)榈谝粋€(gè)條件如果不成立,根本不能進(jìn)行字符串的equals比較,否則會(huì)產(chǎn)生NullPointerException異常。注意:邏輯或運(yùn)算符(|)和短路或運(yùn)算符(||)的差別也是如此。
-----------------------------------------------------------------------------------------------------------------------------------------
4、switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:在Java 5以前,switch(expr)中,expr只能是byte、short、char、int;從Java 5開(kāi)始,Java中引入了枚舉類(lèi)型,expr也可以是enum類(lèi)型;從Java 7開(kāi)始,expr還可以是字符串(String),但是長(zhǎng)整型(long)在目前所有的版本中都是不可以的。
-----------------------------------------------------------------------------------------------------------------------------------------
5、數(shù)組有沒(méi)有l(wèi)ength()方法?String有沒(méi)有l(wèi)ength()方法?
答:數(shù)組沒(méi)有l(wèi)ength()方法,有l(wèi)ength的屬性。
String有l(wèi)ength()方法。在JavaScript中,獲得字符串的長(zhǎng)度是通過(guò)length屬性得到的,這一點(diǎn)容易和Java混淆。
-----------------------------------------------------------------------------------------------------------------------------------------
6、構(gòu)造器(constructor)是否可被重寫(xiě)(override)?
答:構(gòu)造器不能被繼承,因此不能被重寫(xiě),但可以被重載。
-----------------------------------------------------------------------------------------------------------------------------------------
7、闡述靜態(tài)變量和實(shí)例變量的區(qū)別。
答:靜態(tài)變量是被static修飾符修飾的變量,也稱(chēng)為類(lèi)變量,它屬于類(lèi),不屬于類(lèi)的任何一個(gè)對(duì)象,一個(gè)類(lèi)不管創(chuàng)建多少個(gè)對(duì)象,靜態(tài)變量在內(nèi)存中有且僅有一個(gè)拷貝;實(shí)例變量必須依存于某一實(shí)例,需要先創(chuàng)建對(duì)象然后通過(guò)對(duì)象才能訪(fǎng)問(wèn)到它。靜態(tài)變量可以實(shí)現(xiàn)讓多個(gè)對(duì)象共享內(nèi)存。
-----------------------------------------------------------------------------------------------------------------------------------------
8、內(nèi)部類(lèi)可以引用它的包含類(lèi)(外部類(lèi))的成員嗎?有沒(méi)有什么限制?
答:一個(gè)內(nèi)部類(lèi)對(duì)象可以訪(fǎng)問(wèn)創(chuàng)建它的外部類(lèi)對(duì)象的成員,包括私有成員。
-----------------------------------------------------------------------------------------------------------------------------------------
9、Java 中的final關(guān)鍵字有哪些用法?
答:(1)修飾類(lèi):表示該類(lèi)不能被繼承;
(2)修飾方法:表示方法不能被重寫(xiě);
(3)修飾變量:表示變量只能一次賦值以后值不能被修改(常量)。
-----------------------------------------------------------------------------------------------------------------------------------------
10、數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換
如何將字符串轉(zhuǎn)換為基本數(shù)據(jù)類(lèi)型?
答:調(diào)用基本數(shù)據(jù)類(lèi)型對(duì)應(yīng)的包裝類(lèi)中的方法parseXXX(String)或valueOf(String)即可返回相應(yīng)基本數(shù)據(jù)類(lèi)型。
如何將基本數(shù)據(jù)類(lèi)型轉(zhuǎn)換為字符串?
答:一種方法是將基本數(shù)據(jù)類(lèi)型與空字符串("")連接(+)即可獲得其所對(duì)應(yīng)的字符串;另一種方法是調(diào)用String 類(lèi)中的valueOf()方法返回相應(yīng)字符串。
相關(guān)閱讀推薦:
java web開(kāi)發(fā)你需要學(xué)習(xí)哪些內(nèi)容?
Java語(yǔ)言哪里好?為什么那么多人選擇Java后端開(kāi)發(fā)