日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

《疯狂Java讲义》7

發布時間:2025/3/21 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《疯狂Java讲义》7 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

昨天介紹了枚舉類的相關知識,并沒有講完,我們繼續!

枚舉類的成員變量、方法和構造器

先定義一個枚舉類,代碼如下:

下面通過一個程序講述對這個類的使用:

結果如下:

????上面的程序使用Gender枚舉類的時候與普通類沒有什么很大的差別,差別只是產生Gender對象的方式不同,枚舉類的實例只能是枚舉值,而不是通過new隨意的創建對象。

? ??之前提到過,枚舉類比較特殊,無論是寫法上還是含義上。所以,對枚舉類里的實例變量 也應該有一定的要求。舉個栗子:如果沒什么要求,那么上面的程序中我也可以把name實例變量賦值成“男”,但是這個顯然是有問題的。所以理論上枚舉類里的實例變量應該是封裝好的,也就是說要通過private進行修飾。此外,在枚舉類中還應該對實例變量的值進行一些限定。其實說白了,枚舉類就是我們描述集合所用到的列舉法,它的情況應該是有限且可知的。

看下面代碼:

上面框出來的就是解決的兩點。這樣子就不會發生與實際相悖的混亂。

結果如下:

????上述代碼看起來已經天衣無縫了,但是仍然不是最好的。枚舉類通常被設計成不可變類,也就是說,它的成員變量不應該改變,這樣更安全,而且代碼更加簡潔。因此建議將枚舉類的成員變量都用private final修飾。如果用final修飾,那么必須在構造器里為這些成員變量指定初始值。因此應該為枚舉類顯式定義帶參數的構造器。

代碼如下:

可能大家很不熟悉第42行的寫法。

這兩行相當于:

對象與垃圾回收

1. 垃圾回收機制特征:

(1)垃圾回收機制只負責回收內存中的對象,不會回收任何物理資源(例如數據庫連接,網絡ID等資源)

(2)程序無法精確控制垃圾回收的運行,垃圾回收會在合適的時候進行。當對象永久性的失去引用后,系統就會在合適的時候回收它。

(3)在垃圾回收機制回收任何對象之前,總會先調用它的finalize()方法,該方法可能使該對象重新復活(讓一個引用變量重新引用該對象),從而導致垃圾回收機制取消回收。

2. 對象在內存中的狀態:

(1)可達狀態:當一個對象被創建后,有引用變量引用它,則這個對象在程序中處于可達狀態;

(2)可恢復狀態:如果程序中某個對象不再有任何引用變量引用它,它就進入了可恢復狀態。在這種狀態下,垃圾回收機制就準備對它進行回收。但是在回收之前會調用finalize()方法進行資源清理,如果該對象被重新引用,就不回收,否則就回收。

(3)不可達狀態:系統調用finalize()方法之后該對象還是沒有被調用,該對象就到了不可達狀態,就進行回收。

?3. finalize方法

  • finalize()方法用來清理對象的資源;

  • 方法原型為:

????????protected void finalize() throws Throwable

  • 當finalize()方法返回后,對象消失,垃圾回收機制開始執行,方法原型中的throwsThrowable表示它可以拋出任何形式的異常。

  • 垃圾回收機制何時調用對象的finalize()方法是完全透明的,只有當程序認為需要更多的額外內存時,垃圾回收機制才會進行垃圾回收。因此,完全有可能出現這樣一種情形:某個對象失去了引用,但是只占用了少量內存,而且系統沒有產生嚴重的內存需求,因此垃圾回收機制并沒有試圖回收該對象所占用的資源,所以該對象的finalize()方法不會得到調用。

  • finalize()方法有4個特點:

    (1)永遠不要調用某個對象的finalize()方法,該方法應該交給垃圾回收機制調用。

    (2)finalize()方法何時被調用,是否被調用具有不確定性,不要把finalize()方法當作一定會執行的方法。

    (3)當JVM執行可恢復對象的finalize()方法時,可能使該對象或系統中其他對象重新變成可達狀態。

    (4)當JVM執行finalize()方法時出現異常時,垃圾回收機制不會報告異常,程序繼續執行。

使用JAR文件

?1. JAR文件的全稱是JavaArchiveFile,意思就是Java檔案文件。通常JAR文件是一個壓縮文件,與常見的ZIP壓縮文件兼容,通常也被稱為JAR包。JAR文件與ZIP壓縮文件的區別是:JAR文件中默認包含了一個名為META-INF/MANIFEST.MF的清單文件,這個清單文件是生成JAR文件時由系統自動創建的。

2. JAR文件的作用:

????當開發了一個應用程序之后,這個應用程序包含了很多類,如果需要把這個應用程序提供給別人使用,通常會把這些類文件打包成一個JAR文件,把這個JAR文件給別人使用。只要別人在自己的系統里面的CLASSPATH環境變量中添加這個JAR文件,則Java虛擬機就可以自動在內存中解壓這個JAR包,然后進行使用。

3. JAR文件的好處:

(1)安全:能夠對JAR文件進行數字簽名,只讓能夠識別數字簽名的用戶使用里面的東西;

(2)加快下載速度:在網上使用Applet時,如果存在多個文件而不打包,為了能夠把每個文件都下載到客戶端,需要為每個文件單獨建立一個HTTP連接,這是非常耗時的工作。但是打包以后,只需要建立一個HTTP連接即可;

(3)壓縮

(4)包封裝

(5)可移植性

?

【2017.07】

好了,今天java就到這里吧,下面本來是JAR包的使用,可是我怎么就這么不想看呢。明天學習第七章吧——Java基礎類庫。感覺現在看起來學的都是些理論上的東西,但是還是有很大幫助的,知道了很多機理以后,無論是看代碼還是寫代碼都會考慮更多,讓程序更加健壯,所以還是有必要的。不希望自己一直紙上談兵,所以我把書上的程序都敲過一遍,會不會再說,首先混個手熟。加油吧,今天應該可以敲敲代碼,弄弄競賽題。對了,說個有意思的事情,我今天打開公眾號,發現老爸給了我個消息,是一個表情,頭暈眼花的那個,頓時覺得好好玩啊爸爸,太有意思了。不過這個可能在提醒我,只發專業東西不是太好的,可以多面性!get it!

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的《疯狂Java讲义》7的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。