1. 使用final關(guān)鍵字修飾一個(gè)變量時(shí),是引用不能變咖楣,還是引用的對(duì)象不能變督笆?
引用不能變,引用的對(duì)象內(nèi)容可以變
2. 靜態(tài)變量和實(shí)例變量的區(qū)別
實(shí)例變量屬于對(duì)象的屬性诱贿,必須被創(chuàng)建實(shí)例對(duì)象后才會(huì)分配內(nèi)存空間娃肿,才能被使用。而靜態(tài)變量屬于類的屬性珠十,在類被虛擬機(jī)加載之后料扰,就已經(jīng)分配內(nèi)存空間了,不用創(chuàng)建任何對(duì)象實(shí)例焙蹭,就可以直接使用晒杈。
3. Math.round(11.5) 等于多少?Math.round(-11.5)等于多少孔厉?
Math.round(11.5)的返回值是12拯钻,Math.round(-11.5)的返回值是-11。四舍五入的原理是在參數(shù)上加0.5然后進(jìn)行向下取整撰豺。
所謂向上取整指當(dāng)計(jì)算的結(jié)果不為整數(shù)時(shí)取大于計(jì)算結(jié)果的整數(shù),向下取整指當(dāng)計(jì)算的結(jié)果不為整數(shù)時(shí)取小于計(jì)算結(jié)果的整數(shù).當(dāng)計(jì)算結(jié)果為整數(shù)時(shí)直接取整數(shù)
4. Overload和Override的區(qū)別粪般?Overloaded的方法是否可以改變返回值的類型?
(1)重載Overload:表示同一個(gè)類(包含子類繼承父類的所有方法在內(nèi))中可以有多個(gè)名稱相同的方法,但這些方法名稱相同污桦,參數(shù)列表各不相同(即參數(shù)個(gè)數(shù)亩歹、參數(shù)類型、參數(shù)順序必須有一個(gè)不同),返回類型可以不相同捆憎,異常也可以不相同舅柜。
(2)重寫(覆蓋)Override:表示子類中的方法可以與父類中的某個(gè)方法的名稱和參數(shù)完全相同,通過子類創(chuàng)建的實(shí)例對(duì)象調(diào)用這個(gè)方法時(shí)躲惰,將調(diào)用子類中的定義方法致份,這相當(dāng)于把父類中定義的那個(gè)完全相同的方法給覆蓋了,這也是面向?qū)ο缶幊痰亩鄳B(tài)性的一種表現(xiàn)础拨。但是氮块,子類方法和父類方法,名稱和參數(shù)列表(包括類型诡宗、個(gè)數(shù)滔蝉、順序)必須相同,子類訪問權(quán)限和父類一致或者比父類更大塔沃,子類的返回類型和父類一致或者是父類的子類型蝠引,子類拋出的異常和父類一致或者是父類的子異常。
5. java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?
方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn).
重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn)
重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn).
6. abstract的方法是否可同時(shí)是static,是否可同時(shí)是native蛀柴,是否可同時(shí)是synchronized?
都不可以
7. equals()和hashCode()的關(guān)系
(1)equals()和hashCode()是Object類的兩個(gè)方法螃概,equals()是通過“==”對(duì)兩個(gè)對(duì)象進(jìn)行比較,即對(duì)引用地址的比較鸽疾;hashCode()是通過對(duì)象存儲(chǔ)地址來(lái)計(jì)算的吊洼;
(2)equals()和hashcode()必須遵守以下規(guī)則:
覆蓋equals()方法,就必須覆蓋hashCode()方法制肮,因?yàn)樵贖ashMap等集合中的key冒窍,都依賴這兩個(gè)方法。
如果兩個(gè)對(duì)象執(zhí)行equals()方法是相等的,那么執(zhí)行hashcode()方法的結(jié)果也必須是相等的豺鼻;
如果兩個(gè)對(duì)象執(zhí)行equals()方法不相等综液,那么執(zhí)行hashcode()方法的結(jié)果可以相等頁(yè)可以不相等。
(3)覆蓋equals()方法的規(guī)則
做this檢查拘领,如果obj是this意乓,則返回true;
做null檢查约素,如果obj是null届良,則返回flase;
做getClass()檢查圣猎,如果不屬于同個(gè)類士葫,則返回flase;
轉(zhuǎn)換類型送悔,將obj對(duì)象轉(zhuǎn)換為指定類型對(duì)象
對(duì)對(duì)象的屬性慢显,根據(jù)業(yè)務(wù)邏輯進(jìn)行比較
8. String爪模、StringBuilder 和 StringBuffer 比較
運(yùn)算速度比較(通常情況下):StringBuilder > StringBuffer > String
(1)String
使用final修飾,不能被繼承荚藻,通常情況下效率較低屋灌,適用于少量字符串操作
(2)StringBuilder
線程不安全,效率最高应狱,適用于單線程下在字符串緩沖區(qū)進(jìn)行大量操作
(3)StringBuffer
線程安全共郭,效率比StringBuilder低,適用于多線程下在字符串緩沖區(qū)進(jìn)行大量操作
陸續(xù)更新...