JAVA面試題全集(上)

java面試題
面向?qū)ο蟮奶卣饔心男┓矫妫?br> 答:面向?qū)ο蟮奶卣髦饕幸韵聨讉€(gè)方面:

  • 抽象:抽象是將一類(lèi)對(duì)象的共同特征總結(jié)出來(lái)構(gòu)造類(lèi)的過(guò)程疮鲫,包括數(shù)據(jù)抽象和行為抽象兩方面棚点。抽象只關(guān)注對(duì)象有哪些屬性和行為,并不關(guān)注這些行為的細(xì)節(jié)是什么砌梆。
  • 繼承:繼承是從已有類(lèi)得到繼承信息創(chuàng)建新類(lèi)的過(guò)程咸包。提供繼承信息的類(lèi)被稱(chēng)為父類(lèi)(超類(lèi)杖虾、基類(lèi))奇适;得到繼承信息的類(lèi)被稱(chēng)為子類(lèi)(派生類(lèi))。繼承讓變化中的軟件系統(tǒng)有了一定的延續(xù)性葛账,同時(shí)繼承也是封裝程序中可變因素的重要手段(如果不能理解請(qǐng)閱讀閻宏博士的《Java與模式》或《設(shè)計(jì)模式精解》中關(guān)于橋梁模式的部分)籍琳。
  • 封裝:通常認(rèn)為封裝是把數(shù)據(jù)和操作數(shù)據(jù)的方法綁定起來(lái)贷祈,對(duì)數(shù)據(jù)的訪問(wèn)只能通過(guò)已定義的接口势誊。面向?qū)ο蟮谋举|(zhì)就是將現(xiàn)實(shí)世界描繪成一系列完全自治、封閉的對(duì)象闻丑。我們?cè)陬?lèi)中編寫(xiě)的方法就是對(duì)實(shí)現(xiàn)細(xì)節(jié)的一種封裝嗦嗡;我們編寫(xiě)一個(gè)類(lèi)就是對(duì)數(shù)據(jù)和數(shù)據(jù)操作的封裝侥祭∏牙澹可以說(shuō)次哈,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡(jiǎn)單的編程接口(可以想想普通洗衣機(jī)和全自動(dòng)洗衣機(jī)的差別琼牧,明顯全自動(dòng)洗衣機(jī)封裝更好因此操作起來(lái)更簡(jiǎn)單巨坊;我們現(xiàn)在使用的智能手機(jī)也是封裝得足夠好的此改,因?yàn)閹讉€(gè)按鍵就搞定了所有的事情)共啃。
  • 多態(tài)性:多態(tài)性是指允許不同子類(lèi)型的對(duì)象對(duì)同一消息作出不同的響應(yīng)。簡(jiǎn)單的說(shuō)就是用同樣的對(duì)象引用調(diào)用同樣的方法但是做了不同的事情究珊。多態(tài)性分為編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性苦银。如果將對(duì)象的方法視為對(duì)象向外界提供的服務(wù)赶站,那么運(yùn)行時(shí)的多態(tài)性可以解釋為:當(dāng)A系統(tǒng)訪問(wèn)B系統(tǒng)提供的服務(wù)時(shí)贝椿,B系統(tǒng)有多種提供服務(wù)的方式烙博,但一切對(duì)A系統(tǒng)來(lái)說(shuō)都是透明的(就像電動(dòng)剃須刀是A系統(tǒng)烟逊,它的供電系統(tǒng)是B系統(tǒng)宪躯,B系統(tǒng)可以使用電池供電或者用交流電位迂,甚至還有可能是太陽(yáng)能掂林,A系統(tǒng)只會(huì)通過(guò)B類(lèi)對(duì)象調(diào)用供電的方法泻帮,但并不知道供電系統(tǒng)的底層實(shí)現(xiàn)是什么,究竟通過(guò)何種方式獲得了動(dòng)力)脂倦。方法重載(overload)實(shí)現(xiàn)的是編譯時(shí)的多態(tài)性(也稱(chēng)為前綁定)狼讨,而方法重寫(xiě)(override)實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài)性(也稱(chēng)為后綁定)政供。運(yùn)行時(shí)的多態(tài)是面向?qū)ο笞罹璧臇|西朽基,要實(shí)現(xiàn)多態(tài)需要做兩件事:1). 方法重寫(xiě)(子類(lèi)繼承父類(lèi)并重寫(xiě)父類(lèi)中已有的或抽象的方法)稼虎;2). 對(duì)象造型(用父類(lèi)型引用引用子類(lèi)型對(duì)象霎俩,這樣同樣的引用調(diào)用同樣的方法就會(huì)根據(jù)子類(lèi)對(duì)象的不同而表現(xiàn)出不同的行為)。

訪問(wèn)修飾符public,private,protected,以及不寫(xiě)(默認(rèn))時(shí)的區(qū)別杉适?

答:
image.png

類(lèi)的成員不寫(xiě)訪問(wèn)修飾時(shí)默認(rèn)為default猿推。默認(rèn)對(duì)于同一個(gè)包中的其他類(lèi)相當(dāng)于公開(kāi)(public)蹬叭,對(duì)于不是同一個(gè)包中的其他類(lèi)相當(dāng)于私有(private)秽五。受保護(hù)(protected)對(duì)子類(lèi)相當(dāng)于公開(kāi),對(duì)不是同一包中的沒(méi)有父子關(guān)系的類(lèi)相當(dāng)于私有卦碾。Java中,外部類(lèi)的修飾符只能是public或默認(rèn)济榨,類(lèi)的成員(包括內(nèi)部類(lèi))的修飾符可以是以上四種擒滑。

String 是最基本的數(shù)據(jù)類(lèi)型嗎丐一?

答:不是。Java中的基本數(shù)據(jù)類(lèi)型只有8個(gè):byte巨柒、short洋满、int牺勾、long阵漏、float履怯、double虑乖、char、boolean仅叫;除了基本類(lèi)型(primitive type)诫咱,剩下的都是引用類(lèi)型(reference type),Java 5以后引入的枚舉類(lèi)型也算是一種比較特殊的引用類(lèi)型竟痰。

float f=3.4;是否正確坏快?

答:不正確莽鸿。3.4是雙精度數(shù)拾给,將雙精度型(double)賦值給浮點(diǎn)型(float)屬于下轉(zhuǎn)型(down-casting蒋得,也稱(chēng)為窄化)會(huì)造成精度損失额衙,因此需要強(qiáng)制類(lèi)型轉(zhuǎn)換float f =(float)3.4; 或者寫(xiě)成float f =3.4F;入偷。

short s1 = 1; s1 = s1 + 1;有錯(cuò)嗎?short s1 = 1; s1 += 1;有錯(cuò)嗎?

答:對(duì)于short s1 = 1; s1 = s1 + 1;由于1是int類(lèi)型殿雪,因此s1+1運(yùn)算結(jié)果也是int 型丙曙,需要強(qiáng)制轉(zhuǎn)換類(lèi)型才能賦值給short型亏镰。而short s1 = 1; s1 += 1;可以正確編譯拯爽,因?yàn)閟1+= 1;相當(dāng)于s1 = (short)(s1 + 1);其中有隱含的強(qiáng)制類(lèi)型轉(zhuǎn)換。

Java有沒(méi)有g(shù)oto耸黑?

答:goto 是Java中的保留字大刊,在目前版本的Java中沒(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ò)的有特殊意義的單詞或單詞的組合都被視為保留字)

int和Integer有什么區(qū)別公荧?

答:Java是一個(gè)近乎純潔的面向?qū)ο缶幊陶Z(yǔ)言,但是為了編程的方便還是引入了基本數(shù)據(jù)類(lèi)型窟社,但是為了能夠?qū)⑦@些基本數(shù)據(jù)類(lèi)型當(dāng)成對(duì)象操作灿里,Java為每一個(gè)基本數(shù)據(jù)類(lèi)型都引入了對(duì)應(yīng)的包裝類(lèi)型(wrapper class)匣吊,int的包裝類(lèi)就是Integer色鸳,從Java 5開(kāi)始引入了自動(dòng)裝箱/拆箱機(jī)制缕碎,使得二者可以相互轉(zhuǎn)換。
Java 為每個(gè)原始類(lèi)型提供了包裝類(lèi)型:

  • 原始類(lèi)型: boolean凡怎,char统倒,byte房匆,short浴鸿,int岳链,long劲件,float零远,double
  • 包裝類(lèi)型:Boolean牵辣,Character服猪,Byte,Short近她,Integer粘捎,Long攒磨,F(xiàn)loat娩缰,Double


    image.png

    最近還遇到一個(gè)面試題拼坎,也是和自動(dòng)裝箱和拆箱有點(diǎn)關(guān)系的泰鸡,代碼如下所示:


    image.png

如果不明就里很容易認(rèn)為兩個(gè)輸出要么都是true要么都是false债蓝。首先需要注意的是f1、f2盛龄、f3饰迹、f4四個(gè)變量都是Integer對(duì)象引用,所以下面的==運(yùn)算比較的不是值而是引用余舶。裝箱的本質(zhì)是什么呢啊鸭?當(dāng)我們給一個(gè)Integer對(duì)象賦一個(gè)int值的時(shí)候,會(huì)調(diào)用Integer類(lèi)的靜態(tài)方法valueOf匿值,如果看看valueOf的源代碼就知道發(fā)生了什么。


image.png

IntegerCache是Integer的內(nèi)部類(lèi)千扔,其代碼如下所示:
image.png
image.png

簡(jiǎn)單的說(shuō),如果整型字面量的值在-128到127之間库正,那么不會(huì)new新的Integer對(duì)象曲楚,而是直接引用常量池中的Integer對(duì)象,所以上面的面試題中f1==f2的結(jié)果是true褥符,而f3==f4的結(jié)果是false龙誊。
image.png

&和&&的區(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)證用戶登錄時(shí)判定用戶名不是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)算符(||)的差別也是如此硅堆。

解釋內(nèi)存中的棧(stack)、堆(heap)和方法區(qū)(method area)的用法犁苏。

答:通常我們定義一個(gè)基本數(shù)據(jù)類(lèi)型的變量硬萍,一個(gè)對(duì)象的引用,還有就是函數(shù)調(diào)用的現(xiàn)場(chǎng)保存都使用JVM中的椢辏空間朴乖;而通過(guò)new關(guān)鍵字和構(gòu)造器創(chuàng)建的對(duì)象則放在堆空間,堆是垃圾收集器管理的主要區(qū)域助赞,由于現(xiàn)在的垃圾收集器都采用分代收集算法买羞,所以堆空間還可以細(xì)分為新生代和老生代,再具體一點(diǎn)可以分為Eden雹食、Survivor(又可分為From Survivor和To Survivor)畜普、Tenured;方法區(qū)和堆都是各個(gè)線程共享的內(nèi)存區(qū)域群叶,用于存儲(chǔ)已經(jīng)被JVM加載的類(lèi)信息吃挑、常量、靜態(tài)變量街立、JIT編譯器編譯后的代碼等數(shù)據(jù)舶衬;程序中的字面量(literal)如直接書(shū)寫(xiě)的100、"hello"和常量都是放在常量池中赎离,常量池是方法區(qū)的一部分逛犹,。椓禾蓿空間操作起來(lái)最快但是棧很小虽画,通常大量的對(duì)象都是放在堆空間,棧和堆的大小都可以通過(guò)JVM的啟動(dòng)參數(shù)來(lái)進(jìn)行調(diào)整荣病,椔胱空間用光了會(huì)引發(fā)StackOverflowError,而堆和常量池空間不足則會(huì)引發(fā)OutOfMemoryError众雷。
image.png

上面的語(yǔ)句中變量str放在棧上灸拍,用new創(chuàng)建出來(lái)的字符串對(duì)象放在堆上做祝,而"hello"這個(gè)字面量是放在方法區(qū)的。

看看下面代碼的執(zhí)行結(jié)果是什么并且比較一下Java 7以前和以后的運(yùn)行結(jié)果是否一致鸡岗。
image.png

Math.round(11.5) 等于多少混槐?Math.round(-11.5)等于多少?

答:Math.round(11.5)的返回值是12轩性,Math.round(-11.5)的返回值是-11声登。四舍五入的原理是在參數(shù)上加0.5然后進(jìn)行下取整。

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)在目前所有的版本中都是不可以的。

用最有效率的方法計(jì)算2乘以8票彪?

答: 2 << 3(左移3位相當(dāng)于乘以2的3次方红淡,右移3位相當(dāng)于除以2的3次方)。
image.png

image.png

數(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混淆。

在Java中雾家,如何跳出當(dāng)前的多重嵌套循環(huán)铃彰?

答:在最外層循環(huán)前加一個(gè)標(biāo)記如A,然后用break A;可以跳出多重循環(huán)芯咧。(Java中支持帶標(biāo)簽的break和continue語(yǔ)句牙捉,作用有點(diǎn)類(lèi)似于C和C++中的goto語(yǔ)句竹揍,但是就像要避免使用goto一樣,應(yīng)該避免使用帶標(biāo)簽的break和continue邪铲,因?yàn)樗粫?huì)讓你的程序變得更優(yōu)雅芬位,很多時(shí)候甚至有相反的作用,所以這種語(yǔ)法其實(shí)不知道更好)

構(gòu)造器(constructor)是否可被重寫(xiě)(override)带到?

答:構(gòu)造器不能被繼承昧碉,因此不能被重寫(xiě),但可以被重載揽惹。

兩個(gè)對(duì)象值相同(x.equals(y) == true)被饿,但卻可有不同的hash code,這句話對(duì)不對(duì)搪搏?

答:不對(duì)狭握,如果兩個(gè)對(duì)象x和y滿足x.equals(y) == true,它們的哈希碼(hash code)應(yīng)當(dāng)相同疯溺。Java對(duì)于eqauls方法和hashCode方法是這樣規(guī)定的:(1)如果兩個(gè)對(duì)象相同(equals方法返回true)论颅,那么它們的hashCode值一定要相同;(2)如果兩個(gè)對(duì)象的hashCode相同喝检,它們并不一定相同嗅辣。當(dāng)然,你未必要按照要求去做挠说,但是如果你違背了上述原則就會(huì)發(fā)現(xiàn)在使用容器時(shí)澡谭,相同的對(duì)象可以出現(xiàn)在Set集合中,同時(shí)增加新元素的效率會(huì)大大下降(對(duì)于使用哈希存儲(chǔ)的系統(tǒng)损俭,如果哈希碼頻繁的沖突將會(huì)造成存取性能急劇下降)蛙奖。

是否可以繼承String類(lèi)?

答:String 類(lèi)是final類(lèi)杆兵,不可以被繼承雁仲。

當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性琐脏,并可返回變化后的結(jié)果攒砖,那么這里到底是值傳遞還是引用傳遞?

答:是值傳遞日裙。Java語(yǔ)言的方法調(diào)用只支持參數(shù)的值傳遞吹艇。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對(duì)該對(duì)象的引用昂拂。對(duì)象的屬性可以在被調(diào)用過(guò)程中被改變受神,但對(duì)對(duì)象引用的改變是不會(huì)影響到調(diào)用者的。C++和C#中可以通過(guò)傳引用或傳輸出參數(shù)來(lái)改變傳入的參數(shù)的值格侯。在C#中可以編寫(xiě)如下所示的代碼鼻听,但是在Java中卻做不到财著。


image.png

String和StringBuilder、StringBuffer的區(qū)別撑碴?

答:Java平臺(tái)提供了兩種類(lèi)型的字符串:String和StringBuffer/StringBuilder撑教,它們可以儲(chǔ)存和操作字符串。其中String是只讀字符串灰羽,也就意味著String引用的字符串內(nèi)容是不能被改變的驮履。而StringBuffer/StringBuilder類(lèi)表示的字符串對(duì)象可以直接進(jìn)行修改。StringBuilder是Java 5中引入的廉嚼,它和StringBuffer的方法完全相同玫镐,區(qū)別在于它是在單線程環(huán)境下使用的,因?yàn)樗乃蟹矫娑紱](méi)有被synchronized修飾怠噪,因此它的效率也比StringBuffer要高恐似。


image.png

image.png

重載(Overload)和重寫(xiě)(Override)的區(qū)別。重載的方法能否根據(jù)返回類(lèi)型進(jìn)行區(qū)分傍念?

答:方法的重載和重寫(xiě)都是實(shí)現(xiàn)多態(tài)的方式矫夷,區(qū)別在于前者實(shí)現(xiàn)的是編譯時(shí)的多態(tài)性,而后者實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài)性憋槐。重載發(fā)生在一個(gè)類(lèi)中双藕,同名的方法如果有不同的參數(shù)列表(參數(shù)類(lèi)型不同、參數(shù)個(gè)數(shù)不同或者二者都不同)則視為重載阳仔;重寫(xiě)發(fā)生在子類(lèi)與父類(lèi)之間忧陪,重寫(xiě)要求子類(lèi)被重寫(xiě)方法與父類(lèi)被重寫(xiě)方法有相同的返回類(lèi)型,比父類(lèi)被重寫(xiě)方法更好訪問(wèn)近范,不能比父類(lèi)被重寫(xiě)方法聲明更多的異常(里氏代換原則)嘶摊。重載對(duì)返回類(lèi)型沒(méi)有特殊的要求。
image.png

描述一下JVM加載class文件的原理機(jī)制评矩?

答:JVM中類(lèi)的裝載是由類(lèi)加載器(ClassLoader)和它的子類(lèi)來(lái)實(shí)現(xiàn)的叶堆,Java中的類(lèi)加載器是一個(gè)重要的Java運(yùn)行時(shí)系統(tǒng)組件,它負(fù)責(zé)在運(yùn)行時(shí)查找和裝入類(lèi)文件中的類(lèi)斥杜。
由于Java的跨平臺(tái)性虱颗,經(jīng)過(guò)編譯的Java源程序并不是一個(gè)可執(zhí)行程序,而是一個(gè)或多個(gè)類(lèi)文件蔗喂。當(dāng)Java程序需要使用某個(gè)類(lèi)時(shí)上枕,JVM會(huì)確保這個(gè)類(lèi)已經(jīng)被加載、連接(驗(yàn)證弱恒、準(zhǔn)備和解析)和初始化。類(lèi)的加載是指把類(lèi)的.class文件中的數(shù)據(jù)讀入到內(nèi)存中棋恼,通常是創(chuàng)建一個(gè)字節(jié)數(shù)組讀入.class文件返弹,然后產(chǎn)生與所加載類(lèi)對(duì)應(yīng)的Class對(duì)象锈玉。加載完成后,Class對(duì)象還不完整义起,所以此時(shí)的類(lèi)還不可用拉背。當(dāng)類(lèi)被加載后就進(jìn)入連接階段,這一階段包括驗(yàn)證默终、準(zhǔn)備(為靜態(tài)變量分配內(nèi)存并設(shè)置默認(rèn)的初始值)和解析(將符號(hào)引用替換為直接引用)三個(gè)步驟椅棺。最后JVM對(duì)類(lèi)進(jìn)行初始化,包括:1)如果類(lèi)存在直接的父類(lèi)并且這個(gè)類(lèi)還沒(méi)有被初始化齐蔽,那么就先初始化父類(lèi)两疚;2)如果類(lèi)中存在初始化語(yǔ)句,就依次執(zhí)行這些初始化語(yǔ)句含滴。

類(lèi)的加載是由類(lèi)加載器完成的诱渤,類(lèi)加載器包括:根加載器(BootStrap)、擴(kuò)展加載器(Extension)谈况、系統(tǒng)加載器(System)和用戶自定義類(lèi)加載器(java.lang.ClassLoader的子類(lèi))勺美。從Java 2(JDK 1.2)開(kāi)始,類(lèi)加載過(guò)程采取了父親委托機(jī)制(PDM)碑韵。PDM更好的保證了Java平臺(tái)的安全性赡茸,在該機(jī)制中,JVM自帶的Bootstrap是根加載器祝闻,其他的加載器都有且僅有一個(gè)父類(lèi)加載器占卧。類(lèi)的加載首先請(qǐng)求父類(lèi)加載器加載,父類(lèi)加載器無(wú)能為力時(shí)才由其子類(lèi)加載器自行加載治筒。JVM不會(huì)向Java程序提供對(duì)Bootstrap的引用屉栓。下面是關(guān)于幾個(gè)類(lèi)加載器的說(shuō)明:
image.png

char 型變量中能不能存貯一個(gè)中文漢字,為什么耸袜?

答:char類(lèi)型可以存儲(chǔ)一個(gè)中文漢字友多,因?yàn)镴ava中使用的編碼是Unicode(不選擇任何特定的編碼,直接使用字符在字符集中的編號(hào)堤框,這是統(tǒng)一的唯一方法)域滥,一個(gè)char類(lèi)型占2個(gè)字節(jié)(16比特),所以放一個(gè)中文是沒(méi)問(wèn)題的蜈抓。

抽象類(lèi)(abstract class)和接口(interface)有什么異同启绰?

答:抽象類(lèi)和接口都不能夠?qū)嵗梢远x抽象類(lèi)和接口類(lèi)型的引用沟使。一個(gè)類(lèi)如果繼承了某個(gè)抽象類(lèi)或者實(shí)現(xiàn)了某個(gè)接口都需要對(duì)其中的抽象方法全部進(jìn)行實(shí)現(xiàn)委可,否則該類(lèi)仍然需要被聲明為抽象類(lèi)。接口比抽象類(lèi)更加抽象,因?yàn)槌橄箢?lèi)中可以定義構(gòu)造器着倾,可以有抽象方法和具體方法拾酝,而接口中不能定義構(gòu)造器而且其中的方法全部都是抽象方法。抽象類(lèi)中的成員可以是private卡者、默認(rèn)蒿囤、protected、public的崇决,而接口中的成員全都是public的材诽。抽象類(lèi)中可以定義成員變量,而接口中定義的成員變量實(shí)際上都是常量恒傻。有抽象方法的類(lèi)必須被聲明為抽象類(lèi)脸侥,而抽象類(lèi)未必要有抽象方法。

靜態(tài)嵌套類(lèi)(Static Nested Class)和內(nèi)部類(lèi)(Inner Class)的不同碌冶?

答:Static Nested Class是被聲明為靜態(tài)(static)的內(nèi)部類(lèi)湿痢,它可以不依賴(lài)于外部類(lèi)實(shí)例被實(shí)例化。而通常的內(nèi)部類(lèi)需要在外部類(lèi)實(shí)例化后才能實(shí)例化扑庞,其語(yǔ)法看起來(lái)挺詭異的譬重。
我的java編程基礎(chǔ)學(xué)習(xí)群:1080621881 。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末罐氨,一起剝皮案震驚了整個(gè)濱河市臀规,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栅隐,老刑警劉巖塔嬉,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異租悄,居然都是意外死亡谨究,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)泣棋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胶哲,“玉大人,你說(shuō)我怎么就攤上這事潭辈⊙煊欤” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵把敢,是天一觀的道長(zhǎng)寄摆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)修赞,這世上最難降的妖魔是什么婶恼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上勾邦,老公的妹妹穿的比我還像新娘联逻。我一直安慰自己,他們只是感情好检痰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著锨推,像睡著了一般铅歼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上换可,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天椎椰,我揣著相機(jī)與錄音,去河邊找鬼沾鳄。 笑死慨飘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的译荞。 我是一名探鬼主播瓤的,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吞歼!你這毒婦竟也來(lái)了圈膏?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤篙骡,失蹤者是張志新(化名)和其女友劉穎稽坤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體糯俗,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡尿褪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了得湘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杖玲。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖忽刽,靈堂內(nèi)的尸體忽然破棺而出天揖,到底是詐尸還是另有隱情,我是刑警寧澤跪帝,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布今膊,位于F島的核電站,受9級(jí)特大地震影響伞剑,放射性物質(zhì)發(fā)生泄漏斑唬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望恕刘。 院中可真熱鬧缤谎,春花似錦、人聲如沸褐着。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)含蓉。三九已至频敛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間馅扣,已是汗流浹背斟赚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留差油,地道東北人拗军。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蓄喇,于是被迫代替她去往敵國(guó)和親发侵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354