靜態關鍵字static以及幫助文檔的製作

        我們每次寫主函數都會用到static關鍵字,對於新人來說,我們只要按照固定格式寫就不會出錯,但是我們並不知道static是什麼含義。static關鍵字是靜態的意思,用於修飾成員變量和成員函數。當一個成員被static修飾的時候,它也能被對象調用,和其它成員表現上是一樣的,區別在於:靜態的成員除了被對象所調用外還可以被類名直接調用,在內存上的區別就是被靜態修飾的成員在內存上有一獨立的存儲空間,這個空間就叫做方法區或者共享區。static的特點:隨着類的加載而加載;優先於對象而存在;被所有對象共享;可以直接被類名調用。static還可以修飾方法,但是被static修飾的方法只能使用靜態的成員變量,不能使用實例變量(實例變量就是隨着對象的建立而存在的成員變量)。而且靜態方法時優先於對象存在的,所以靜態方法中不能出現this、super等關鍵字,因爲this這些關鍵字都是代表對象的,而靜態方法存在的時候沒有對象,所以會報錯。靜態修飾好處在於,可以節省空間,對共享數據單獨開闢空間,所有對象都可以訪問;壞處在於既然被修飾了之後,靜態只能訪問靜態,訪問上存在限制,而且生命週期過長,

        這時我們會發現主函數就是一個被static修飾的函數,這裏我們分析一下主函數:

        public static void main(String[] args){}:

        1、public:代表着該函數的訪問權限是最大的;

        2、static:代表着主函數隨着類的加載而加載;

        3、void:代表着主函數沒有返回值;

        4、main:main不是關鍵字,但是十一個特殊的單詞,可以被Java虛擬機識別;

        5、String[] args:這是一個字符串數組,而字符串數組的名字是唯一一個主函數中可以改變的地方。

主函數是有固定格式的,用於Jvm的識別,固定格式中只有字符串數組的名字可以改變,但是我們因爲習慣問題,一般還是寫args,而args就是單詞arguments(參數的複數形式)的縮寫形式。

        現在我們瞭解了靜態static,那麼我們就會想我們什麼時候使用static呢?首先對於靜態成員變量,只有我們的程序中出現共享數據時,我們用static進行定義以減少內存的佔用。對於方法而言,當我們方法內部沒有用到非靜態的的成員變量時,該方法可以定義成靜態的方法。

        有時候我們自己也可以製作工具類,這些工具類裏封裝一些方法,提供給別人使用,但是別人不知道你裏面都有什麼函數和怎麼去使用這些函數,這時候我們就需要製作一個幫助文檔來讓別人知道你的工具類的具體使用方法,那麼這個幫助文檔具體是怎麼製作的呢?

        幫助文檔格式:/**

                                    函數功能的描述

                                    @param 描述一下我們需要接收什麼類型的參數

                                    @return 描述一下函數的返回值

                                     */

這就是具體的格式,當然如果讀者想知道具體的文檔描述的關鍵字,可以自行查閱。

        這裏我們介紹一種簡單的設計模式:單例設計模式。什麼時候單例設計模式呢?單例模式就是當一個程序只能允許一個對象,這個時候我們就需要使用單例設計模式。單例設計模式分爲兩種,一種叫做餓漢式,另一種是懶漢式。我們可以將構造函數私有化,這樣就禁止了其它程序自行創建對象,在類中自己創建一個本類對象,然後在自己創建一個方法讓其它程序獲得該對象。餓漢式具體代碼:private Single();private static Single s=new Single();public staticSingle getInstance(){return s};我們每次返回的都是對象s,無論你接收多少個對象,指向的都是同一個地址。懶漢式是在需要的時候在創建對象:private static Single s=null;private Single();public static Single getInstance(){if s==null   s=new Single(); return s;}但是這個在判斷的時候有點問題,因爲CPU訪問進程的時候是間斷的,只是因爲時間太短,我們感覺不出來而已。當訪問到if那一句是如果間斷了,然後又進來一個進程判斷,這時候如果繼續就有可能導致兩個對象被建立,所以一般我們都有餓漢式,當然這個我們也有解決方法,就是在這個方法上加一個鎖public static synchronized SinglegetInstance(){if(s==null){SinglegetInstance(Single.class){if(s==null) s=new Single();}}return s;}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章