国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Reference不為人知的一面

2019-11-18 15:23:15
字體:
來源:轉載
供稿:網友

  java 不支持 pointer,只提供 reference,初學者經常因此頗為困惑,非凡是修過數據
  結構的信息系學生,他們心中第一個想到的是:「沒 pointer,這怎么成,那不就做不
  出 linked list 和 tree 的數據結構?」殊不知 reference 就是一種智能型的 point
  er,它具有 pointer 的好處,而且不用像 pointer 一樣要程序員自行 reference (*)
  以及 dereference (&),更不會像 pointer 一樣會誤闖內存禁區造成 crash。因為好
  處多多,所以 reference 已經是現代化程序語言的重要必備功能了。什么!你說 xx 高
  級語言沒支持 reference,那你可以把它埋葬在二十世紀的歷史灰燼中。
  Java 對于資料的處理方式是:只要是基本型態(包括 boolean, byte, short, int, l
  ong, float, double, char)一律使用 pass by value,其它型態一律 pass by refer
  ence。但是我發現這在未來有可能變動,因為 Java language 將 byvalue 訂為 reser
  ved Word(非 keyword)。當 Java 將 byvalue 變成 keyword 之時,非基本型態的值
  就可以 pass by value 了,但我相信,此時 Java 也必須開始支持 copy constrUCtor
  作為配套措施,究竟使用 deep copy 或 shallow copy(甚至 deep 和 shallow 兼而
  有之的 copy)還是要讓 PRogrammer 決定。
  前面提到:只要是基本型態(包括 boolean、byte、short、int、long、float、doubl
  e、char)一律使用 pass by value,其它型態一律 pass by reference。到底什么是
  pass by value?什么又是 pass by reference 呢?打個比方,pass by value 就是資
  料的「分身」傳遞過去,pass by reference 就是資料的「本尊」傳遞過去。(注:自
  從 發生那件新聞,有了「本尊」和「分身」的名詞之后,我發現要向學生解釋 refere
  nce 的觀念也就輕易多了)。因為對象一律是 pass by reference,所以一個對象經常
  同時被多個 variable 所指到。
  Java 提供自動內存治理的機制,也就是俗稱的 garbage collection(垃圾收集)。當
  一個對象不再被任何 variable 所指到,就代表此對象從此不可能再被利用,Java 虛擬
  機器內一個負責收集垃圾的 thread 就會在適當的時機出來將此塊內存回收。
  記得在 Java 之父 James Gosling 應邀到臺灣時(1997年12月),我曾經問他:Java
  的這種自動內存治理方式造成某些程序(例如 debugger)的困擾,Java 有沒有打算支
  持 weak reference。 James Gosling回答:未來的版本將會支持 weak reference,果
  然在后來的 JDK 1.2 就提供此支持了。JDK 1.2 除了 weak reference(也就是 java.
  lang.ref.WeakReference)之外,還多了一個強化的 weak reference(也就是 java.l
  ang.ref.SoftReference)以及一個弱化的 weak reference(也就是 java.lang.ref.P
  hantomReference),這個設計考慮得相當仔細。
  這些 reference 依照「強度」排列如下:
  Direct Reference > Soft Reference > Weak Reference > Phantom Reference
  其中,direct reference 就是一般的 reference。只要被任何 direct reference 所
  reference 到的對象就不會被 garbage collector 清除。其它的三種 reference(包括
  soft reference,weak reference,phantom reference)則不然,他們不會影響 gar
  bage collection。
  假如你對這些非凡的 reference 感愛好,不妨去看看 java.lang.ref 的 Javadoc,順
  便寫幾個程序試試看。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清丰县| 桐乡市| 兴安县| 淄博市| 阿拉善左旗| 怀集县| 左权县| 北安市| 宜良县| 三门县| 随州市| 宁化县| 临城县| 黑龙江省| 正蓝旗| 桂林市| 渭源县| 阿拉善盟| 仲巴县| 武功县| 磐安县| 平塘县| 衡水市| 皋兰县| 平谷区| 信宜市| 裕民县| 安丘市| 方正县| 梁河县| 临潭县| 阿坝| 靖西县| 崇州市| 邵阳市| 高邑县| 鹤壁市| 邢台市| 克拉玛依市| 江津市| 西乡县|