<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Flyingis

    Talking and thinking freely !
    Flying in the world of GIS !
    隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
    數據加載中……

    靜態設計

    ??? 作者:Flyingis

    ??? 在我們系統設計中,類方法的功能設計一般是改變對象的狀態,以及返回對象的信息。然而在這兩種情況之外,還存在一種類型的方法,其設計目的,是專為系統提供某種特定的功能,作為系統專用的一種工具,有的書上稱之為“工具方法”,一般情況下,我們會將這類方法設計成靜態的,保證系統中所有的代碼都可以使用它。在Java API中,最典型的例子之一是java.lang.Math類,它的所有變量、方法都是靜態的,專為數學計算而設計。

    static?double?PI;??//類變量,代表圓周率
    static?double?abs(double?a);??//類方法,取雙精度浮點類型參數的絕對值

    ??? 經過關鍵字static修飾后,對象中的實例變量或實例方法就成為了類變量、類方法,使用靜態的好處是,在代碼中,我們可以不用創建對象而直接使用類變量和類方法,這樣可以簡化我們的代碼,減少系統的內存開銷。例如,在多處需要使用這些方法所提供的功能時,如果使用實例方法,就需要我們創建多個對象來調用這些方法,對于一個規模龐大的系統來說,這通常是不理智的,使用靜態方法,可以保證該靜態方法僅會存在于系統內存中的一個地址段內。從這里也可以看出,靜態方法內應該盡量使用類變量代替實例變量,否則在多次調用靜態方法的過程中,會創建多個實例變量,增加系統占用的內存空間。

    ??? Java虛擬機第一次加載類的時候,會初始化靜態的代碼塊,這和實例變量和實例方法的加載時間不一樣。靜態的代碼可以存放在一個static代碼塊中,在類加載的時候一起初始化,但是在static代碼塊中不能拋出異常:

    static?{
    ??
    double?i?=?java.lang.Math.random();
    ??
    long?time?=?System.currentTimeMillis();
    }

    ??? 現在來理解“靜態”,簡而言之,就是一旦在系統中生成,其地址就不再改變的變量或方法,因此,靜態設計可以為我們提供如下方便:

    ??? 1.簡化或優化代碼。
    ??? 2.減少系統的內存開銷。
    ??? 3.分離出系統中的工具類。

    ??? 世上少有魚與熊掌兼得得事,如果漫無目的地使用靜態,也會出現一些意外情況。

    ??? 靜態變量在內存中只會存在一份拷貝,而靜態設計的目的之一是要為系統提供一系列通用的工具,因此所有的代碼都可以對靜態變量進行訪問或改變它的值,這樣容易使設計者對當前變量所存儲的值產生疑惑,不知道是誰動了我的“奶酪”。

    ??? 如果在程序上面靜態導入相應的包、類,在程序中可以不使用類名,這樣會給代碼閱讀者帶來混淆。靜態導入的格式:

    import?static?com.sun.staticClassTools.CommonTool;

    ??? 靜態變量(類變量)的生命周期是從類的第一次加載到應用程序的結束,使用靜態變量存儲集合通常會帶來巨大的內存開銷,因為Java垃圾回收不會回收在以靜態方式存在的集合對象,直到應用程序終止,哪怕這些集合對象已經不再使用。

    ??? 靜態設計違反OO設計原則,它是非面向對象的,類似于C語言中的全局函數,以過程的思想處理我們的代碼。

    ??? 因此,過度的靜態設計會給我們的程序帶來包括內存泄漏在內的多種問題,一般情況下,如果可以不使用靜態,應該盡量避免,保證系統中的每一處靜態設計都有其明確的存在的意義。

    posted on 2006-12-27 16:16 Flyingis 閱讀(2466) 評論(0)  編輯  收藏 所屬分類: JavaSE

    主站蜘蛛池模板: 亚洲国产高清视频| 亚洲精品无码激情AV| 久久亚洲日韩看片无码| 黄色网站软件app在线观看免费| 亚洲欧洲国产成人综合在线观看| 国产亚洲精品美女久久久久久下载| 国产老女人精品免费视频| 亚洲a无码综合a国产av中文| 国产免费久久精品久久久| 黄色免费网址在线观看| 亚洲中文字幕丝袜制服一区| 国产精品美女久久久免费 | 337p日本欧洲亚洲大胆精品555588| 99久久国产精品免费一区二区 | 巨波霸乳在线永久免费视频| 亚洲黄色中文字幕| 97性无码区免费| 亚洲熟妇av午夜无码不卡| 精品国产精品久久一区免费式| 国产亚洲精品美女久久久久| 国产亚洲人成A在线V网站| 日韩电影免费在线观看| 亚洲乱码一二三四五六区| 日韩精品视频免费网址| 人妖系列免费网站观看| 亚洲av无码成人黄网站在线观看| 91精品免费久久久久久久久| 亚洲情A成黄在线观看动漫软件| 国产zzjjzzjj视频全免费| 99热在线日韩精品免费| 亚洲精品人成电影网| 国产精品va无码免费麻豆| 中文字幕在线成人免费看| 亚洲日韩乱码中文无码蜜桃臀| 毛色毛片免费观看| 国产精品成人69XXX免费视频| 亚洲视频在线不卡| 免费成人黄色大片| 99视频在线免费看| 亚洲精华国产精华精华液好用| 在线播放亚洲第一字幕|