Java面試題

面向?qū)ο蠛兔嫦蜻^程的區(qū)別
面向過程就是分析出解決問題所需要的步驟吨艇,然后用函數(shù)把這些步驟一步一步實現(xiàn),使用的時候一個一個依次調(diào)用就可以了;面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個對象湘今,建立對象的目的不是為了完成一個步驟己单,而是為了描敘某個事物在整個解決問題的步驟中的行為唉窃。
面向過程 :面向過程性能比面向?qū)ο蟾摺?因為類調(diào)用時需要實例化,開銷比較大纹笼,比較消耗資源纹份,所以當(dāng)性能是最重要的考量因素的時候,比如單片機廷痘、嵌入式開發(fā)蔓涧、Linux/Unix 等一般采用面向過程開發(fā)。但是笋额,面向過程沒有面向?qū)ο笠拙S護元暴、易復(fù)用、易擴展兄猩。

面向?qū)ο?:面向?qū)ο笠拙S護茉盏、易復(fù)用、易擴展枢冤。 因為面向?qū)ο笥蟹庋b鸠姨、繼承、多態(tài)性的特性淹真,所以可以設(shè)計出低耦合的系統(tǒng)讶迁,使系統(tǒng)更加靈活、更加易于維護趟咆。但是添瓷,面向?qū)ο笮阅鼙让嫦蜻^程低梅屉。
2.Java的四個基本特性(抽象,封裝鳞贷,繼承坯汤,多態(tài))
--抽象:就是把現(xiàn)實生活中的某一類東西提取出來,用程序代碼表示搀愧,我們通常叫做類或者接口 抽象包括兩個方面:一個是數(shù)據(jù)抽象惰聂,一個是過程抽象。數(shù)據(jù)抽象也就是對象的屬性咱筛。過程抽象是對象的行為特征搓幌。
--封裝:把客觀事物封裝成抽象的類,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作迅箩,對不可信的進行封裝隱藏溉愁。封裝分為屬性的封裝和方法的封裝。
--繼承:是對有著共同特性的多類事物饲趋,進行再抽象成一個類拐揭。這個類就是多類事物的父類。父類的意義在于抽取多類事物的共性奕塑。
--多態(tài):允許不同類的對象對同一消息做出響應(yīng)堂污。方法的重載、類的覆蓋正體現(xiàn)了多態(tài)龄砰。
3.重載和重寫的區(qū)別
重載實現(xiàn)的是編譯時的多態(tài)性盟猖,重寫實現(xiàn)的是運行時的多態(tài)性。重載發(fā)生在一個類中换棚,同名的方法如果有不同的參數(shù)列表則視為重載式镐;重寫發(fā)生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的參數(shù)列表固蚤,有兼容的返回類型碟案。”
重寫:從字面上看颇蜡,重寫就是 重新寫一遍的意思价说。其實就是在子類中把父類本身有的方法重新寫一遍。子類繼承了父類原有的方法风秤,但有時子類并不想原封不動的繼承父類中的某個方法鳖目,所以在方法名,參數(shù)列表缤弦,返回類型(除過子類中方法的返回值是父類中方法返回值的子類時)都相同的情況下领迈, 對方法體進行修改或重寫,這就是重寫。但要注意子類函數(shù)的訪問修飾權(quán)限不能少于父類的狸捅。
重載:在一個類中衷蜓,同名的方法如果有不同的參數(shù)列表(參數(shù)類型不同、參數(shù)個數(shù)不同甚至是參數(shù)順序不同)則視為重載尘喝。同時磁浇,重載對返回類型沒有要求,可以相同也可以不同朽褪,但不能通過返回類型是否相同來判斷重載置吓。
4.構(gòu)造器Constructor是否可被override
“構(gòu)造器Constructor不能被繼承,因此不能被重寫(Override),但是可以被重載(Overload)
二、構(gòu)造器如何工作缔赠?
Java在構(gòu)造實例時的順序是這樣的:
1衍锚、分配對象空間,并將對象中成員初始化為0或者空嗤堰,java不允許用戶操縱一個不定值的對象戴质。   
2、執(zhí)行屬性值的顯式初始化   
3踢匣、執(zhí)行構(gòu)造器   
4 置森、將變量關(guān)聯(lián)到堆中的對象上

而執(zhí)行構(gòu)造器的步驟有可以分為以下幾步:
1、Bind構(gòu)造器的參數(shù)
2符糊、如果顯式的調(diào)用了this,那就遞歸調(diào)用this構(gòu)造器然后跳到步驟5
3呛凶、遞歸調(diào)用顯式或者隱式的父類構(gòu)造器男娄,除了Object以外,因為它沒有父類
4漾稀、執(zhí)行顯式的實例變量初始化(也就是上邊的流程中的第二步模闲,調(diào)用返回以后執(zhí)行,
這個步驟相當(dāng)于在父構(gòu)造器執(zhí)行后隱含執(zhí)行的崭捍,看樣子像一個特殊處理)
三尸折、構(gòu)造器不可被orerride(why)

其實你只需要記住一句話:構(gòu)造器不是方法,那么用來修飾方法特性的所有修飾符都不能用來修飾構(gòu)造器(并不等與構(gòu)造器
具備這些特性殷蛇,雖然不能用static修飾構(gòu)造器实夹,但它卻有靜態(tài)特性)構(gòu)造器只能用 public private protected這
三個權(quán)限修飾符,且不能有返回語句粒梦。

5.訪問控制符public,protected,private,以及默認(rèn)的區(qū)別
private 只有在本類中才能訪問
public 在任何地方都能訪問
protected 在同包內(nèi)的類及包外的子類能訪問
默認(rèn)(default)不寫在同包內(nèi)能訪問
private是只有本類中才能訪問亮航,public是都能訪問,默認(rèn)(包訪問權(quán)限)是只有本包內(nèi)才能訪問匀们,包括本包內(nèi)的子類和普通類缴淋,而protected是只要本包內(nèi)就能訪問,包括本包內(nèi)的子類和普通類,另外別的包內(nèi)的子類也能訪問重抖,但是普通類不能訪問露氮。所以說protected和默認(rèn)(包訪問權(quán)限)是很相似的,在同一個包內(nèi)钟沛,它們是一樣的畔规,而在另一個包內(nèi),默認(rèn)是不能訪問的讹剔,而protected是只有子類能訪問
6.是否可以繼承String類油讯,解釋原因
“java中不可以繼承String類. 因為String類有final修飾符,而final修飾的類是不能被繼承的
Java關(guān)鍵字final有“這是無法改變的”或者“終態(tài)的”含義,它可以修飾非抽象類延欠、非抽象類成員方法和變量陌兑。你可能出于兩種理解而需要阻止改變:設(shè)計或效率。
  final類不能被繼承由捎,沒有子類兔综,final類中的方法默認(rèn)是final的。
  final方法不能被子類的方法覆蓋狞玛,但可以被繼承软驰。
  final成員變量表示常量,只能被賦值一次心肪,賦值后值不再改變锭亏。
  final不能用于修飾構(gòu)造方法。
  注意:父類的private成員方法是不能被子類方法覆蓋的硬鞍,因此private類型的方法默認(rèn)是final類型的慧瘤。
7.String和StringBuffer.StringBuitder的區(qū)別.
java中用于處理字符串常用的有三個類:
1、java.lang.String
2固该、java.lang.StringBuffer
3锅减、java.lang.StrungBuilder
三者共同之處:都是final類,不允許被繼承,主要是從性能和安全性上考慮的伐坏,因為這幾個類都是經(jīng)常被使用著怔匣,且考慮到防止其中的參數(shù)被參數(shù)修改影響到其他的應(yīng)用。
StringBuffer是線程安全桦沉,可以不需要額外的同步用于多線程中;
StringBuilder是非同步,運行于多線程中就需要使用著單獨同步處理每瞒,但是速度就比StringBuffer快多了;
StringBuffer與StringBuilder兩者共同之處:可以通過append、indert進行字符串的操作纯露。
String實現(xiàn)了三個接口:Serializable独泞、Comparable<String>、CarSequence
StringBuilder只實現(xiàn)了兩個接口Serializable苔埋、CharSequence懦砂,相比之下String的實例可以通過compareTo方法進行比較,其他兩個不可以。荞膘。
  String為字符串常量罚随,而StringBuilder和StringBuffer均為字符串變量,即String對象一旦創(chuàng)建之后該對象是不可更改的羽资,但后兩者的對象是變量淘菩,是可以更改的
在線程安全上,StringBuilder是線程不安全的屠升,而StringBuffer是線程安全的
8.hashcode和eauats方法的關(guān)系
equals()相等的兩個對象潮改,hashcode()一定相等;
equals()不相等的兩個對象腹暖,卻并不能證明他們的hashcode()不相等汇在。
反過來:
hashcode()不等,一定能推出equals()也不等脏答;
hashcode()相等糕殉,equals()可能相等,也可能不等殖告。

9.抽象類和接口的區(qū)別
含有abstract修飾符的class即為抽象類阿蝶,abstract 類不能創(chuàng)建實例對象。含有abstract方法的類必須定義為abstract class黄绩,abstract class類中的方法不必是抽象的羡洁。abstract class類中定義抽象方法必須在具體(Concrete)子類中實現(xiàn),所以爽丹,不能有抽象構(gòu)造方法或抽象靜態(tài)方法筑煮。如果子類沒有實現(xiàn)抽象父類中的所有抽象方法,那么子類也必須定義為abstract類型习劫。
接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的嚼隘。接口中的方法定義默認(rèn)為public abstract類型诽里,接口中的成員變量類型默認(rèn)為public static final。

下面比較一下兩者的語法區(qū)別:
1.抽象類可以有構(gòu)造方法飞蛹,接口中不能有構(gòu)造方法谤狡。
2.抽象類中可以有普通成員變量,接口中沒有普通成員變量
3.抽象類中可以包含非抽象的普通方法卧檐,接口中的所有方法必須都是抽象的墓懂,不能有非抽象的普通方法。

  1. 抽象類中的抽象方法的訪問類型可以是public霉囚,protected和(默認(rèn)類型,雖然
    eclipse下不報錯捕仔,但應(yīng)該也不行),但接口中的抽象方法只能是public類型的,并且默認(rèn)即為public abstract類型榜跌。
  2. 抽象類中可以包含靜態(tài)方法闪唆,接口中不能包含靜態(tài)方法
  3. 抽象類和接口中都可以包含靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問類型可以任意钓葫,但接口中定義的變量只能是public static final類型悄蕾,并且默認(rèn)即為public static final類型。
  4. 一個類可以實現(xiàn)多個接口础浮,但只能繼承一個抽象類
    10.自動裝箱與拆箱
    裝箱就是自動將基本數(shù)據(jù)類型轉(zhuǎn)換為包裝器類型帆调;拆箱就是自動將包裝器類型轉(zhuǎn)換為基本數(shù)據(jù)類型。
    裝箱:用于在垃圾回收堆中儲存值類型豆同。裝箱是值類型到Object類型或到此類型所實現(xiàn)的任 何接口類型的隱式轉(zhuǎn)換番刊。
    拆箱:從object類型到值類型或從接口類型到實現(xiàn)該接口的值類型的顯示轉(zhuǎn)換。

注釋:以上均為個人理解

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诱告,一起剝皮案震驚了整個濱河市撵枢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌精居,老刑警劉巖锄禽,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異靴姿,居然都是意外死亡沃但,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門佛吓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宵晚,“玉大人,你說我怎么就攤上這事维雇∮偃校” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵吱型,是天一觀的道長逸贾。 經(jīng)常有香客問我,道長津滞,這世上最難降的妖魔是什么铝侵? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮触徐,結(jié)果婚禮上咪鲜,老公的妹妹穿的比我還像新娘。我一直安慰自己撞鹉,他們只是感情好疟丙,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布颖侄。 她就那樣靜靜地躺著,像睡著了一般隆敢。 火紅的嫁衣襯著肌膚如雪发皿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天拂蝎,我揣著相機與錄音穴墅,去河邊找鬼。 笑死温自,一個胖子當(dāng)著我的面吹牛玄货,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悼泌,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼松捉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了馆里?” 一聲冷哼從身側(cè)響起隘世,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鸠踪,沒想到半個月后丙者,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡营密,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年械媒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片评汰。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡纷捞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出被去,到底是詐尸還是另有隱情主儡,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布惨缆,位于F島的核電站糜值,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏踪央。R本人自食惡果不足惜臀玄,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一瓢阴、第九天 我趴在偏房一處隱蔽的房頂上張望畅蹂。 院中可真熱鬧,春花似錦荣恐、人聲如沸液斜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽少漆。三九已至臼膏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間示损,已是汗流浹背渗磅。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留检访,地道東北人始鱼。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像脆贵,于是被迫代替她去往敵國和親医清。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容