android面試的java知識點(diǎn)總結(jié)

github(持續(xù)更新世澜,歡迎star,fork補(bǔ)充)


自動裝箱(autoboxing)與拆箱(unboxing)

自動裝箱是 Java 編譯器在基本數(shù)據(jù)類型和對應(yīng)的對象包裝類型之間做的一個轉(zhuǎn)化。
比如:把 int 轉(zhuǎn)化成 Integer峰搪,double 轉(zhuǎn)化成 Double等,反之就是自動拆箱辟灰。
Java中的自動裝箱與拆箱

Java 創(chuàng)建對象的幾種方式

(1) 用 new 語句創(chuàng)建對象个榕,這是最常見的創(chuàng)建對象的方法
(2) 運(yùn)用反射手段,調(diào)用 java.lang.Class 或者 java.lang.reflect.Constructor 類的 newInstance() 實(shí)例方法
(3) 調(diào)用對象的 clone() 方法
(4) 運(yùn)用反序列化手段,調(diào)用 java.io.ObjectInputStream 對象的 readObject() 方法

(1)和(2)都會明確的顯式的調(diào)用構(gòu)造函數(shù)伞矩;(3)是在內(nèi)存上對已有對象的影印笛洛,所以不會調(diào)用構(gòu)造函數(shù) (4)是從文件中還原類的對象夏志,也不會調(diào)用構(gòu)造函數(shù)乃坤。

序列化(Serializable )與反序列化(Deserialize)

對象序列化(Serializable)是指將對象轉(zhuǎn)換為字節(jié)序列的過程,而反序列化則是根據(jù)字節(jié)序列恢復(fù)對象的過程沟蔑。
序列化一般用于以下場景:
1.永久性保存對象湿诊,保存對象的字節(jié)序列到本地文件中;
2.通過序列化對象在網(wǎng)絡(luò)中傳遞對象瘦材;
3.通過序列化在進(jìn)程間傳遞對象厅须。

只有實(shí)現(xiàn)了Serializable和Externalizable接口的類的對象才能被序列化,
java.io.ObjectOutputStream代表對象輸出流食棕,它的writeObject(Objectobj)方法可對參數(shù)指定的obj對象進(jìn)行序列化朗和,把得到的字節(jié)序列寫到一個目標(biāo)輸出流中。
java.io.ObjectInputStream代表對象輸入流簿晓,它的readObject()方法從一個源輸入流中讀取字節(jié)序列眶拉,再把它們反序列化為一個對象,并將其返回憔儿。

覆蓋 (Override) 和重載 (Overload)

Java 中的方法重載發(fā)生在同一個類里面兩個或者是多個方法的方法名相同但是參數(shù)不同的情況忆植;
方法覆蓋是說子類重新定義了父類的方法,方法覆蓋必須有相同的方法名,參數(shù)列表和返回類型朝刊。

內(nèi)存中的棧(stack)耀里、堆(heap)和靜態(tài)存儲區(qū)的用法

通常我們定義一個基本數(shù)據(jù)類型的變量,一個對象的引用拾氓,還有就是函數(shù)調(diào)用的現(xiàn)場保存都使用內(nèi)存中的椃肟妫空間;而通過new關(guān)鍵字和構(gòu)造器創(chuàng)建的對象放在堆空間咙鞍;程序中的字面量(literal)如直接書寫的100织堂、“hello”和常量都是放在靜態(tài)存儲區(qū)中。椖坛拢空間操作最快但是也很小易阳,通常大量的對象都是放在堆空間,整個內(nèi)存包括硬盤上的虛擬內(nèi)存都可以被當(dāng)成堆空間來使用吃粒。

String str = new String(“hello”);

上面的語句中 str 放在棧上潦俺,用 new 創(chuàng)建出來的字符串對象放在堆上,而“hello”這個字面量放在靜態(tài)存儲區(qū)徐勃。

強(qiáng)引用事示、弱引用、軟引用僻肖、虛引用

強(qiáng)引用:如“Object obj = new Object()”肖爵,這類引用是 Java 程序中最普遍的。只要強(qiáng)引用還存在臀脏,垃圾收集器就永遠(yuǎn)不會回收掉被引用的對象劝堪。
軟引用:它用來描述一些可能還有用,但并非必須的對象揉稚。在系統(tǒng)內(nèi)存不夠用時秒啦,這類引用關(guān)聯(lián)的對象將被垃圾收集器回收。JDK1.2 之后提供了 SoftReference 類來實(shí)現(xiàn)軟引用搀玖。
弱引用:它也是用來描述非需對象的余境,但它的強(qiáng)度比軟引用更弱些,被弱引用關(guān)聯(lián)的對象只能生存島下一次垃圾收集發(fā)生之前灌诅。當(dāng)垃圾收集器工作時芳来,無論當(dāng)前內(nèi)存是否足夠,都會回收掉只被弱引用關(guān)聯(lián)的對象猜拾。在 JDK1.2 之后即舌,提供了 WeakReference 類來實(shí)現(xiàn)弱引用。
虛引用:最弱的一種引用關(guān)系关带,完全不會對其生存時間構(gòu)成影響侥涵,也無法通過虛引用來取得一個對象實(shí)例沼撕。為一個對象設(shè)置虛引用關(guān)聯(lián)的唯一目的是希望能在這個對象被收集器回收時收到一個系統(tǒng)通知。JDK1.2 之后提供了 PhantomReference 類來實(shí)現(xiàn)虛引用芜飘。
Java 7之基礎(chǔ) - 強(qiáng)引用务豺、弱引用、軟引用嗦明、虛引用

Java垃圾回收機(jī)制

在C++中笼沥,對象所占的內(nèi)存在程序結(jié)束運(yùn)行之前一直被占用,在明確釋放之前不能分配給其它對象娶牌;而在Java中奔浅,當(dāng)沒有對象引用指向原先分配給某個對象的內(nèi)存時,該內(nèi)存便成為垃圾诗良。JVM的一個系統(tǒng)級線程會自動釋放該內(nèi)存塊汹桦。垃圾收集意味著程序不再需要的對象是"無用信息",這些信息將被丟棄鉴裹。當(dāng)一個對象不再被引用的時候舞骆,內(nèi)存回收它占領(lǐng)的空間,以便空間被后來的新對象使用径荔。事實(shí)上督禽,除了釋放沒用的對象,垃圾收集也可以清除內(nèi)存記錄碎片总处。由于創(chuàng)建對象和垃圾收集器釋放丟棄對象所占的內(nèi)存空間狈惫,內(nèi)存會出現(xiàn)碎片。碎片是分配給對象的內(nèi)存塊之間的空閑內(nèi)存洞鹦马。碎片整理將所占用的堆內(nèi)存移到堆的一端胧谈,JVM將整理出的內(nèi)存分配給新的對象。
垃圾收集能自動釋放內(nèi)存空間菠红,減輕編程的負(fù)擔(dān)第岖。這使Java虛擬機(jī)具有一些優(yōu)點(diǎn)。首先试溯,它能使編程效率提高。在沒有垃圾收集機(jī)制的時候郊酒,可能要花許多時間來解決一個難懂的存儲器問題遇绞。在用Java語言編程的時候,靠垃圾收集機(jī)制可大大縮短時間燎窘。其次是它保護(hù)程序的完整性摹闽, 垃圾收集是Java語言安全性策略的一個重要部份。垃圾收集的一個潛在的缺點(diǎn)是它的開銷影響程序性能褐健。Java虛擬機(jī)必須追蹤運(yùn)行程序中有用的對象付鹿,而且最終釋放沒用的對象澜汤。這一個過程需要花費(fèi)處理器的時間。其次垃圾收集算法的不完備性舵匾,早先采用的某些垃圾收集算法就不能保證100%收集到所有的廢棄內(nèi)存俊抵。當(dāng)然隨著垃圾收集算法的不斷改進(jìn)以及軟硬件運(yùn)行效率的不斷提升,這些問題都可以迎刃而解坐梯。
一般來說徽诲,Java開發(fā)人員可以不重視JVM中堆內(nèi)存的分配和垃圾處理收集,但是吵血,充分理解Java的這一特性可以讓我們更有效地利用資源谎替。同時要注意finalize()方法是Java的缺省機(jī)制,有時為確保對象資源的明確釋放蹋辅,可以編寫自己的finalize方法钱贯。(引用自百度)
Java 垃圾收集機(jī)制

List,Map,Set

圖示
集合大家族

HashCode和equal方法

1、hashCode的存在主要是用于查找的快捷性侦另,如Hashtable喷舀,HashMap等,hashCode是用來在散列存儲結(jié)構(gòu)中確定對象的存儲地址的淋肾;
2硫麻、如果兩個對象相同,就是適用于equals(java.lang.Object) 方法樊卓,那么這兩個對象的hashCode一定要相同拿愧;
3、如果對象的equals方法被重寫碌尔,那么對象的hashCode也盡量重寫浇辜,并且產(chǎn)生hashCode使用的對象,一定要和equals方法中使用的一致唾戚,否則就會違反上面提到的第2點(diǎn)柳洋;
4、兩個對象的hashCode相同叹坦,并不一定表示兩個對象就相同熊镣,也就是不一定適用于equals(java.lang.Object)方法,只能夠說明這兩個對象在散列存儲結(jié)構(gòu)中募书,如Hashtable绪囱,他們“存放在同一個籃子里”。
HashCode和equal方法

用戶線程(User Thread)與守護(hù)線程(Daemon Thread)

守護(hù)線程莹捡,是指用戶程序在運(yùn)行的時候后臺提供的一種通用服務(wù)的線程鬼吵。只要當(dāng)前JVM實(shí)例中尚存在任何一個用戶線程沒有結(jié)束,守護(hù)線程就全部工作篮赢;只有當(dāng)最后一個用戶線程結(jié)束時齿椅,守護(hù)線程隨著 JVM 一同結(jié)束工作琉挖。 守護(hù)線程最典型的應(yīng)用就是 GC (垃圾回收器)。
JAVA并發(fā)編程——守護(hù)線程(Daemon Thread)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涣脚,一起剝皮案震驚了整個濱河市示辈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涩澡,老刑警劉巖顽耳,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異妙同,居然都是意外死亡射富,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門粥帚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胰耗,“玉大人,你說我怎么就攤上這事芒涡〔竦疲” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵费尽,是天一觀的道長赠群。 經(jīng)常有香客問我,道長旱幼,這世上最難降的妖魔是什么查描? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮柏卤,結(jié)果婚禮上冬三,老公的妹妹穿的比我還像新娘。我一直安慰自己缘缚,他們只是感情好勾笆,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桥滨,像睡著了一般窝爪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上该园,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天酸舍,我揣著相機(jī)與錄音,去河邊找鬼里初。 笑死,一個胖子當(dāng)著我的面吹牛忽舟,可吹牛的內(nèi)容都是我干的双妨。 我是一名探鬼主播淮阐,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼刁品!你這毒婦竟也來了泣特?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤挑随,失蹤者是張志新(化名)和其女友劉穎状您,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兜挨,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膏孟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拌汇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柒桑。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖噪舀,靈堂內(nèi)的尸體忽然破棺而出魁淳,到底是詐尸還是另有隱情,我是刑警寧澤与倡,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布界逛,位于F島的核電站,受9級特大地震影響纺座,放射性物質(zhì)發(fā)生泄漏息拜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一比驻、第九天 我趴在偏房一處隱蔽的房頂上張望该溯。 院中可真熱鬧,春花似錦别惦、人聲如沸狈茉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氯庆。三九已至,卻和暖如春扰付,著一層夾襖步出監(jiān)牢的瞬間堤撵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工羽莺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留实昨,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓盐固,卻偏偏與公主長得像荒给,于是被迫代替她去往敵國和親丈挟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

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

  • 從三月份找實(shí)習(xí)到現(xiàn)在志电,面了一些公司曙咽,掛了不少,但最終還是拿到小米挑辆、百度例朱、阿里、京東鱼蝉、新浪洒嗤、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,194評論 11 349
  • Java8張圖 11蚀乔、字符串不變性 12烁竭、equals()方法、hashCode()方法的區(qū)別 13吉挣、...
    Miley_MOJIE閱讀 3,693評論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法派撕,類相關(guān)的語法,內(nèi)部類的語法睬魂,繼承相關(guān)的語法终吼,異常的語法,線程的語...
    子非魚_t_閱讀 31,587評論 18 399
  • (一)Java部分 1氯哮、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,071評論 0 62
  • 在setting.xml文件下的mirrors節(jié)點(diǎn)中加入阿里云鏡像地址:
    每天拖豬上山閱讀 1,372評論 0 50