久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Reference 不為人知的一面

瀏覽:126日期:2024-07-20 10:10:47
內(nèi)容: Java 不支持 pointer,只提供 reference,初學(xué)者常常因此頗為困惑,特別是修過(guò)數(shù)據(jù)結(jié)構(gòu)的信息系學(xué)生,他們心中第一個(gè)想到的是:「沒(méi) pointer,這怎么成,那不就做不出 linked list 和 tree 的數(shù)據(jù)結(jié)構(gòu)?」殊不知 reference 就是一種智能型的 pointer,它具有 pointer 的好處,而且不用像 pointer 一樣要程序員自行 reference (*) 以及 dereference (&),更不會(huì)像 pointer 一樣會(huì)誤闖內(nèi)存禁區(qū)造成 crash。因?yàn)楹锰幎喽啵?reference 已經(jīng)是現(xiàn)代化程序語(yǔ)言的重要必備功能了。什么!你說(shuō) xx 高級(jí)語(yǔ)言沒(méi)支持 reference,那你可以把它埋葬在二十世紀(jì)的歷史灰燼中。Java 對(duì)于資料的處理方式是:只要是基本型態(tài)(包括 boolean, byte, short, int, long, float, double, char)一律使用 pass by value,其它型態(tài)一律 pass by reference。但是我發(fā)現(xiàn)這在未來(lái)有可能變動(dòng),因?yàn)?Java language 將 byvalue 訂為 reserved word(非 keyword)。當(dāng) Java 將 byvalue 變成 keyword 之時(shí),非基本型態(tài)的值就可以 pass by value 了,但我相信,此時(shí) Java 也必須開(kāi)始支持 copy constructor 作為配套措施,畢竟使用 deep copy 或 shallow copy(甚至 deep 和 shallow 兼而有之的 copy)還是要讓 programmer 決定。前面提到:只要是基本型態(tài)(包括 boolean、byte、short、int、long、float、double、char)一律使用 pass by value,其它型態(tài)一律 pass by reference。到底什么是pass by value?什么又是 pass by reference 呢?打個(gè)比方,pass by value 就是資料的「分身」傳遞過(guò)去,pass by reference 就是資料的「本尊」傳遞過(guò)去。(注:自從 發(fā)生那件新聞,有了「本尊」和「分身」的名詞之后,我發(fā)現(xiàn)要向?qū)W生解釋 reference 的觀念也就容易多了)。因?yàn)閷?duì)象一律是 pass by reference,所以一個(gè)對(duì)象常常 同時(shí)被多個(gè) variable 所指到。Java 提供自動(dòng)內(nèi)存管理的機(jī)制,也就是俗稱的 garbage collection(垃圾收集)。當(dāng)一個(gè)對(duì)象不再被任何 variable 所指到,就代表此對(duì)象從此不可能再被利用,Java 虛擬機(jī)器內(nèi)一個(gè)負(fù)責(zé)收集垃圾的 thread 就會(huì)在適當(dāng)?shù)臅r(shí)機(jī)出來(lái)將此塊內(nèi)存回收。記得在 Java 之父 James Gosling 應(yīng)邀到臺(tái)灣時(shí)(1997年12月),我曾經(jīng)問(wèn)他:Java的這種自動(dòng)內(nèi)存管理方式造成某些程序(例如 debugger)的困擾,Java 有沒(méi)有打算支持 weak reference。 James Gosling回答:未來(lái)的版本將會(huì)支持 weak reference,果然在后來(lái)的 JDK 1.2 就提供此支持了。JDK 1.2 除了 weak reference(也就是 java.lang.ref.WeakReference)之外,還多了一個(gè)強(qiáng)化的 weak reference(也就是 java.lang.ref.SoftReference)以及一個(gè)弱化的 weak reference(也就是 java.lang.ref.PhantomReference),這個(gè)設(shè)計(jì)考慮得相當(dāng)仔細(xì)。這些 reference 依照「強(qiáng)度」排列如下:Direct Reference> Soft Reference> Weak Reference> Phantom Reference其中,direct reference 就是一般的 reference。只要被任何 direct reference 所reference 到的對(duì)象就不會(huì)被 garbage collector 清除。其它的三種 reference(包括 soft reference,weak reference,phantom reference)則不然,他們不會(huì)影響 garbage collection。如果你對(duì)這些特殊的 reference 感興趣,不妨去看看 java.lang.ref 的 Javadoc,順便寫(xiě)幾個(gè)程序試試看。zz Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
相關(guān)文章:
主站蜘蛛池模板: 美女视频久久 | 日韩不卡一区二区三区 | 国产片久久 | 91精品久久久久久久久久 | 欧美区视频 | 蜜桃av在线播放 | 久久se精品一区精品二区 | 久久狠狠 | 欧美激情视频一区二区三区在线播放 | 国产一区二区视频免费 | 欧美日韩中文在线观看 | 麻豆专区一区二区三区四区五区 | 成人精品电影 | 国产91视频一区二区 | 亚洲社区在线观看 | 黄网免费 | 亚洲精品高清视频 | 日韩中文一区二区 | 日韩成人在线看 | 久久草在线视频 | 美女黄在线观看 | 欧美电影一区 | 美女操网站| 国产高清一区二区 | 欧美午夜视频 | 日韩第一区 | 国产精品久久久久久久 | 国产精品一区二区精品 | 欧美午夜一区二区三区免费大片 | 奇米影视7777 | 黄网站涩免费蜜桃网站 | a在线免费观看 | 欧美日韩啪啪 | 欧美日韩久久久 | 欧美一级全黄 | 午夜免费一区二区播放 | 精品中文字幕在线 | 国产成人精品午夜视频免费 | av免费看在线 | 亚洲精品一区二区 | 亚洲国产二区 |