freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java面向?qū)ο蟪绦蛟O(shè)計教程第二版java對象的生命周期ppt-資料下載頁

2024-12-07 22:02本頁面
  

【正文】 2指向 123 swapstr2 , sw ptemp, mainstr1指向 abc swapstr1, mainstr2指向 123 輸出 mainstr1 mainstr2 輸出 mainstr1 mainstr2 輸出 swapstr1 swapstr2 main str1 before swap me hod: abc main str2 before swap method: 123 swap str1 in swap method: 123 swap str2 in swap method: abc main str1 after swap method: abc main str2 after swap method: 123 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 77 進一步討論 ? 通過 clone方法實現(xiàn)對象的復(fù)制 ? 舉例 : 實參個數(shù)可變的方法定義 ? Java 5 提供了一種稱為 “Varargs”的機制,用來定義能與多個實參相匹配的形參,以一種更簡單的方式來傳遞個數(shù)可變的實參。 ? 在定義方法時,只要在一個形參的類型與參數(shù)名之間加上 “...”,就可以讓它和 0...n個實參相匹配。 ? Varargs定義時要注意: ?一個方法里只能有一個能與多個實參相匹配的形參。 ?如果這個方法還有其它的形參,則要把這一形參放在最后。 ? 舉例: 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 78 使用了哪個屬性 ? ? 對象的屬性通常也稱為變量( Variable),變量在類型中聲明的所在位置決定了該變量的作用域。 ? 在類型中聲明的成員變量,一般稱為域( Field),靜態(tài)變量的作用域是整個類型,而非靜態(tài)變量的作用域是某個具體的對象。 ? 在方法或代碼塊中聲明的變量,一般稱為局部變量( Local Variable),其作用域是它所處的方法或者代碼塊內(nèi)部。 ? 在方法定義時聲明的變量,一般稱為參數(shù)(Parameter),其作用域也是它所處的方法內(nèi)部。 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 79 變量 作用域 ? 在同一個作用域不能聲明同名的變量。 ? 局部變量和參數(shù)變量作用域相同,因此不能在一個方法體中同時聲明同名的局部變量和參數(shù)變量。 ? 包容作用域或者互斥作用域允許存在同名的變量。 ? 互斥作用域中的同名變量不會引起解析歧義。 ? 對于包容作用域中的同名變量,不做限制的變量指的是最近作用域中聲明的變量。 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 80 屬性的調(diào)用 ? 如果不存在重名問題,也沒有可見性限制,那么變量可以在有效的作用域中自由地被調(diào)用。 ? 對于重名的成員變量而言,無論是靜態(tài)的還是非靜態(tài)的,擴展子類的變量隱藏了超類中的重名變量。在應(yīng)用中,編譯器以聲明的類型進行解析,如以擴展子類聲明,則隱藏了超類的同名變量;如以超類聲明,即使以擴展子類實例化,該變量也將反映該超類的性質(zhì)。 ? 舉例: 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 81 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 82 內(nèi)部類 ? 在一個頂層類( Top level class)中聲明另一個類作為它的成員,這一些類稱為內(nèi)嵌類,非靜態(tài)的成員類有時也直接稱為內(nèi)部類。 ? 內(nèi)嵌類和它的頂層類可以分別有不同的繼承關(guān)系和實現(xiàn)不同的接口類型。 ? 內(nèi)部類也可以設(shè)計成抽象類或者接口。內(nèi)部類的聲明方式跟一般的類沒什么不同,不過就是外部類的成員。 ? 內(nèi)部類可以使用任意一個訪問限定詞,不像一般類只能使用 public和缺?。?default)兩個。 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 83 內(nèi)部類的作用 ? 程序設(shè)計時,有些邏輯上相關(guān)的類必須是要伴隨另一個類的存在才有意義,如果兩者分開,可能在類的管理上比較麻煩,所以我們可以把這樣的類寫成一個內(nèi)部類。 ? 內(nèi)部類從結(jié)構(gòu)上看是它所在外部類(頂層類)的組成部分,理所當(dāng)然可以訪問該外部類的任何成員,包含聲明為 private的成員。 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 84 內(nèi)部類的形式 ? 作用域范圍在整個類中的內(nèi)部類可分為靜態(tài)成員類和實例成員類 。 ? 作用域范圍僅屬于一個方法甚至某個語句的內(nèi)部類稱為局部成員類 。 ? 有些局部成員類甚至沒有直接給出類名,稱為匿名成員類。 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 85 內(nèi)部類的命名規(guī)則 ? 一般是外部類名和相應(yīng)的內(nèi)部類名通過 “ $‖符號連接起來,如 InnerClass$ ? 內(nèi)部類嵌套層數(shù)越深,相應(yīng)的內(nèi)部類名就越長 . ? 匿名類則用相應(yīng)的數(shù)字符號表示。 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 86 內(nèi)部類的使用 ? 靜態(tài)成員類加上了 static限定詞,讓別的類在訪問時可以通過外部類的名稱來直接訪問。 ? 實例成員類就必須先生成外部類的對象后,才能通過這個對象來訪問。 ? 在內(nèi)部類中,除了靜態(tài)成員類以外,所有非靜態(tài)成員類體內(nèi)不能再聲明帶有 static關(guān)鍵字的成員。 ? 關(guān)鍵字 this指的是內(nèi)部類的實例,如果要訪問外部類的同名變量則是在 this之前加上外部類的類名。 ? 局部成員類在訪問包含它的方法體中的其它變量時,該變量必須是個常量,也就是說聲明時要加上 final關(guān)鍵字。 ? 局部成員類只能在包含它的方法體中使用,其它的方法或類基本上是訪問不到它的(除非通過方法返回對象)。 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 87 匿名類 ? 匿名類也屬于局部成員類,但作用域范圍最小。 ? 匿名類最常用于設(shè)計事件處理類,因為這些類既多處理的事情又單一,我們專門為其命名相當(dāng)費勁,因此就把這個命名工作交給 Java的編譯器,讓它在編譯時根據(jù)一定的規(guī)則進行命名。 ? 不能在其它的場合中訪問匿名類了。 ? 由于定義匿名類總是類似于 new AnonymousInner(){}。 因此沒有辦法在其中加入任何限定詞。 ? AnonymousInner只能是一個接口、抽象類或者一般類(但不能是 final型的)。 ? 舉例: 對象的清除 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 89 垃圾自動回收機制 ? Java虛擬機采用一種稱為垃圾回收的技術(shù),以確保仍被引用著的對象仍會駐留在內(nèi)存里,而當(dāng)對象在程序中不再被引用時,它所占用的內(nèi)存空間就會被釋放。 ? 垃圾自動回收機制意味著不必?fù)?dān)心所謂的懸掛引用問題的發(fā)生,因為在程序的某處尚被引用著的對象是不會被當(dāng)作垃圾回收的。 ? 垃圾回收并不能保證總有可用的內(nèi)存給新生對象,而且,垃圾回收也確實是個需要內(nèi)存開銷的過程。 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 90 垃圾回收的邏輯過程 ? 首先要區(qū)分開 “ 活 ” 對象和 “ 死 ” 對象,活對象是指那些在執(zhí)行代碼中仍被使用著的對象,死對象就是要被回收的垃圾;然后,回收死對象的內(nèi)存空間。 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 91 垃圾回收模型的引用計數(shù)模型 ? 當(dāng)對象 X引用對象 Y時,系統(tǒng)會增加 Y上的引用計數(shù),而當(dāng) X不再引用對象 Y時,系統(tǒng)會減少它的引用計數(shù)。當(dāng) Y上的引用計數(shù)器減為零之后, Y對象即不再存活,并可以被回收了,這也同時會使 Y引用的所有對象的引用計數(shù)分別減 1。 ? 引用計數(shù)模型對于出現(xiàn)循環(huán)引用問題時是無效的:如果 X和 Y彼此引用對方,那么它們的引用計數(shù)器都不會減到零,所以也不會被垃圾回收。同樣,它們直接和間接引用的其它對象也不會因為被判為不再存活而被回收。 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 92 垃圾回收模型的“標(biāo)記 —清除”模型 ? 為了找到哪些對象還活躍著,首先要確定一個根對象的集合,這包括了那些直接可達(dá)的對象:例如,在棧里的局部變量中的對象引用是可達(dá)的,因為我們可以用這些變量來操作對象,所以被局部變量所引用的對象當(dāng)然是存活的。一旦確定了根對象的集合,垃圾收集器就可以把那些被根對象所引用的對象標(biāo)記為可達(dá)對象。 ? 然后,它會繼續(xù)檢查這些對象中所包含的對象引用:若被這些引用所指的對象在第一步中已標(biāo)為可達(dá)的,那么就把它忽略過去,否則被引用對象會被標(biāo)記為可達(dá)的;接下來再檢查這個剛被打過標(biāo)記的對象中對其它對象的引用;這個過程一直進行到?jīng)]有可達(dá)對象尚未標(biāo)記為止。 ? 當(dāng)整個打標(biāo)記過程結(jié)束之后,死對象就可以從內(nèi)存中被清除了。 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 93 Runtime類以及 System類中 與垃圾回收有關(guān)的一些常用方法 ? public void gc( ) 該方法請求虛擬機執(zhí)行無用對象的回收任務(wù),以便重用內(nèi)存資源, ? public void runFinalization( ) 該方法請求虛擬機在那些不可達(dá)的對象上,調(diào)用從前還沒有執(zhí)行過的 finalize方法。 ? public long freeMemory( ) 該方法返回系統(tǒng)中可用內(nèi)存字節(jié)數(shù)的估計值。 ? public long totalMemory( ) 該方法返回系統(tǒng)中全部內(nèi)存資源字節(jié)值。 finalize方法的編碼準(zhǔn)則 ? 每個類都有唯一的一個 finalize方法。 ? 如果沒有編寫 finalize方法,編譯器將會提供一個標(biāo)準(zhǔn)的finalize方法,但它可能并不是所需要的。 ? finalize方法沒有任何參數(shù)。 ? finalize方法應(yīng)當(dāng)執(zhí)行在對象銷毀之前的任何必需的清除操作。 ? 在 finalize方法中可以執(zhí)行任何類型的操作。通常,它們用來銷毀復(fù)雜的對象或者聚合對象,改變類的靜態(tài)變量的值,或者復(fù)活對象。 ? 在重寫 finalize方法時建議調(diào)用父類的 finalize方法,如果不調(diào)用父類的 finalize方法,可能對象中自己的那部分會被正確回收,而父類的那一部分卻沒被回收。即便我們所定義的類并沒有繼承任何類,也要盡量養(yǎng)成調(diào)用父類的 finalize方法的好習(xí)慣。 ? 舉例: 2022/1/4 Java面向?qū)ο蟪绦蛟O(shè)計教程 94
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1