摘要:另外,還可以調(diào)用和等很便利的方法,以返回表示字段,方法,以及構(gòu)造器的對(duì)象的數(shù)組。運(yùn)行結(jié)果無(wú)參構(gòu)造器有參構(gòu)造器和實(shí)現(xiàn)原理和區(qū)別和區(qū)別是一個(gè)集合接口。
對(duì)象的四種引用
強(qiáng)引用只要引用存在,垃圾回收器永遠(yuǎn)不會(huì)回收
可直接通過(guò)obj取得對(duì)應(yīng)的對(duì)象 如 obj.equels(new Object()); 而這樣 obj 對(duì)象對(duì)后面 new Object 的一個(gè)強(qiáng) 引用,只有當(dāng) obj 這個(gè)引用被釋放之后,對(duì)象才會(huì)被釋放掉,這也是我們經(jīng)常所用到的編碼形式。
軟引用 非必須引用,內(nèi)存溢出之前進(jìn)行回收,可以通過(guò)以下代碼實(shí)現(xiàn)
這時(shí)候sf是對(duì)obj的一個(gè)軟引用,通過(guò)sf.get()方法可以取到這個(gè)對(duì)象,當(dāng)然,當(dāng)這個(gè)對(duì)象被標(biāo)記為需要回收的對(duì)象 時(shí),則返回null; 軟引用主要用戶實(shí)現(xiàn)類似緩存的功能,在內(nèi)存足夠的情況下直接通過(guò)軟引用取值,無(wú)需從繁忙的 真實(shí)來(lái)源查詢數(shù)據(jù),提升速度;當(dāng)內(nèi)存不足時(shí),自動(dòng)刪除這部分緩存數(shù)據(jù),從真正的來(lái)源查詢這些數(shù)據(jù)。
弱引用 第二次垃圾回收時(shí)回收,可以通過(guò)如下代碼實(shí)現(xiàn)
弱引用是在第二次垃圾回收時(shí)回收,短時(shí)間內(nèi)通過(guò)弱引用取對(duì)應(yīng)的數(shù)據(jù),可以取到,當(dāng)執(zhí)行過(guò)第二次垃圾回收時(shí), 將返回null。弱引用主要用于監(jiān)控對(duì)象是否已經(jīng)被垃圾回收器標(biāo)記為即將回收的垃圾,可以通過(guò)弱引用的 isEnQueued 方法返回對(duì)象是否被垃圾回收器標(biāo)記。 ThreadLocal 中有使用到弱引用,
虛引用 垃圾回收時(shí)回收,無(wú)法通過(guò)引用取到對(duì)象值,可以通過(guò)如下代碼實(shí)現(xiàn)
虛引用是每次垃圾回收的時(shí)候都會(huì)被回收,通過(guò)虛引用的get方法永遠(yuǎn)獲取到的數(shù)據(jù)為null,因此也被成為幽靈引 用。虛引用主要用于檢測(cè)對(duì)象是否已經(jīng)從內(nèi)存中刪除。
Java獲取反射的三種方法
1.通過(guò)new對(duì)象實(shí)現(xiàn)反射機(jī)制2.通過(guò)路徑實(shí)現(xiàn)反射機(jī)制3.通過(guò)類名實(shí)現(xiàn)反射機(jī)制
Java反射機(jī)制
Java 反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠獲得這個(gè)類的所有屬性和方法,對(duì)于任意一個(gè)對(duì)象都能夠 調(diào)用它的任意一個(gè)屬性和方法。這種在運(yùn)行時(shí)動(dòng)態(tài)的獲取信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為 Java 的反射機(jī)制。
Class 類與 java.lang.reflect 類庫(kù)一起對(duì)反射的概念進(jìn)行了支持,該類庫(kù)包含了 Field,Method,Constructor 類 (每 個(gè)類都實(shí)現(xiàn)了 Member 接口)。這些類型的對(duì)象時(shí)由 JVM 在運(yùn)行時(shí)創(chuàng)建的,用以表示未知類里對(duì)應(yīng)的成員。
這樣你就可以使用 Constructor 創(chuàng)建新的對(duì)象,用 get() 和 set() 方法讀取和修改與 Field 對(duì)象關(guān)聯(lián)的字段,用 invoke() 方法調(diào)用與 Method 對(duì)象關(guān)聯(lián)的方法。另外,還可以調(diào)用 getFields() getMethods() 和 getConstructors() 等很便利的方法,以返回表示字段,方法,以及構(gòu)造器的對(duì)象的數(shù)組。這樣匿名對(duì)象的信息 就能在運(yùn)行時(shí)被完全確定下來(lái),而在編譯時(shí)不需要知道任何事情。
運(yùn)行結(jié)果:無(wú)參構(gòu)造器Run......有參構(gòu)造器Run......Apple
Arrays.sort 和 Collections.sort 實(shí)現(xiàn)原理 和區(qū)別
Collection和Collections區(qū)別
java.util.Collection 是一個(gè)集合接口。它提供了對(duì)集合對(duì)象進(jìn)行基本操作的通用接口方法。
java.util.Collections 是針對(duì)集合類的一個(gè)幫助類,他提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜索、排序、 線程安全等操作。 然后還有混排(Shuffling)、反轉(zhuǎn)(Reverse)、替換所有的元素(fill)、拷貝(copy)、返 回Collections中最小元素(min)、返回Collections中最大元素(max)、返回指定源列表中最后一次出現(xiàn)指定目 標(biāo)列表的起始位置( lastIndexOfSubList )、返回指定源列表中第一次出現(xiàn)指定目標(biāo)列表的起始位置 ( IndexOfSubList )、根據(jù)指定的距離循環(huán)移動(dòng)指定列表中的元素(Rotate);
事實(shí)上Collections.sort方法底層就是調(diào)用的array.sort方法,
legacyMergeSort (a):歸并排序 ComparableTimSort.sort():Timsort 排序
Timsort 排序是結(jié)合了合并排序(merge sort)和插入排序(insertion sort)而得出的排序算法
Timsort的核心過(guò)程
TimSort 算法為了減少對(duì)升序部分的回溯和對(duì)降序部分的性能倒退,將輸入按其升序和降序特點(diǎn)進(jìn)行了分 區(qū)。排序的輸入的單位不是一個(gè)個(gè)多帶帶的數(shù)字,而是一個(gè)個(gè)的塊-分區(qū)。其中每一個(gè)分區(qū)叫一個(gè)run。針對(duì)這 些 run 序列,每次拿一個(gè) run 出來(lái)按規(guī)則進(jìn)行合并。每次合并會(huì)將兩個(gè) run合并成一個(gè) run。合并的結(jié)果保 存到棧中。合并直到消耗掉所有的 run,這時(shí)將棧上剩余的 run合并到只剩一個(gè) run 為止。這時(shí)這個(gè)僅剩的 run 便是排好序的結(jié)果。
綜上述過(guò)程,Timsort算法的過(guò)程包括
(0)如何數(shù)組長(zhǎng)度小于某個(gè)值,直接用二分插入排序算法
(1)找到各個(gè)run,并入棧
(2)按規(guī)則合并run
前百度面試官整理的——Java后端面試題(三)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/74610.html
摘要:但在的過(guò)程中過(guò)程中有可能被其他對(duì)象調(diào)用它的產(chǎn)生異常,如果你的程序不捕獲這個(gè)異常,線程就會(huì)異常終止,進(jìn)入狀態(tài),如果你的程序捕獲了這個(gè)異常,那么程序就會(huì)繼續(xù)執(zhí)行語(yǔ)句塊可能還有語(yǔ)句塊以及以后的代碼。 LinkedHashMap 的應(yīng)用 基于 LinkedHashMap 的訪問(wèn)順序的特點(diǎn),可構(gòu)造一個(gè) LRU(Least Recently Used) 最近最少使用簡(jiǎn)單緩存。 也有一些開(kāi)源的緩存產(chǎn)...
摘要:發(fā)生了線程不安全情況。本來(lái)在中,發(fā)生哈希沖突是可以用鏈表法或者紅黑樹(shù)來(lái)解決的,但是在多線程中,可能就直接給覆蓋了。中,當(dāng)同一個(gè)值上元素的鏈表節(jié)點(diǎn)數(shù)不小于時(shí),將不再以單鏈表的形式存儲(chǔ)了,會(huì)被調(diào)整成一顆紅黑樹(shù)。 showImg(https://segmentfault.com/img/bVbsVLk?w=288&h=226); List 和 Set 的區(qū)別 List , Set 都是繼承自...
摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒(méi)有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來(lái)而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測(cè)試不同環(huán)境結(jié)果可能有差異而就是。 花了很長(zhǎng)時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...
摘要:好不容易在月號(hào)這天中午點(diǎn)左右接到了來(lái)自阿里的面試電話。這里會(huì)不斷收集和更新基礎(chǔ)相關(guān)的面試題,目前已收集題。面試重難點(diǎn)的和的打包過(guò)程多線程機(jī)制機(jī)制系統(tǒng)啟動(dòng)過(guò)程,啟動(dòng)過(guò)程等等掃清面試障礙最新面試經(jīng)驗(yàn)分享,此為第一篇,開(kāi)篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開(kāi)發(fā)面試題總結(jié) 各大公司 Jav...
閱讀 2229·2019-08-30 10:51
閱讀 785·2019-08-30 10:50
閱讀 1463·2019-08-30 10:49
閱讀 3130·2019-08-26 13:55
閱讀 1591·2019-08-26 11:39
閱讀 3412·2019-08-26 11:34
閱讀 1937·2019-08-23 18:30
閱讀 3381·2019-08-23 18:22