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

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

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

    thinking

    one platform thousands thinking

    java中static的作用

    java中static的作用

    有時(shí)你希望定義一個(gè)類成員,使它的使用完全獨(dú)立于該類的任何對(duì)象。通常情況下,類成員必須通過它的類的對(duì)象訪問,但是可以創(chuàng)建這樣一個(gè)成員,它能夠 被它自己使用,而不必引用特定的實(shí)例。在成員的聲明前面加上關(guān)鍵字static(靜態(tài)的)就能創(chuàng)建這樣的成員。如果一個(gè)成員被聲明為static,它就能 夠在它的類的任何對(duì)象創(chuàng)建之前被訪問,而不必引用任何對(duì)象。你可以將方法和變量都聲明為static。static 成員的最常見的例子是main( ) 。因?yàn)樵诔绦蜷_始執(zhí)行時(shí)必須調(diào)用main() ,所以它被聲明為static。

    聲明為static的變量實(shí)質(zhì)上就是全局變量。當(dāng)聲明一個(gè)對(duì)象時(shí),并不產(chǎn)生static變量的拷貝,而是該類所有的實(shí)例變量共用同一個(gè)static變量。聲明為static的方法有以下幾條限制:
    ·
    它們僅能調(diào)用其他的static 方法。
    ·
    它們只能訪問static數(shù)據(jù)。
    ·
    它們不能以任何方式引用this 或super(關(guān)鍵字super 與繼承有關(guān),在下一章中描述)。
    如果你需要通過計(jì)算來初始化你的static變量,你可以聲明一個(gè)static塊,Static 塊僅在該類被加載時(shí)執(zhí)行一次。下面的例子顯示的類有一個(gè)static方法,一些static變量,以及一個(gè)static 初始化塊:
    // Demonstrate static variables,methods,and blocks.

    class UseStatic {
    static int a = 3;
    static int b;


    static void meth(int x) {
    System.out.println("x = " + x);
    System.out.println("a = " + a);
    System.out.println("b = " + b);


    }

    static {
    System.out.println("Static block initialized.");
    b = a * 4;


    }

    public static void main(String args[]) {
    meth(42);
    }
    }


    一旦UseStatic 類被裝載,所有的static語句被運(yùn)行。首先,a被設(shè)置為3,接著static 塊執(zhí)行(打印一條消息),最后,b被初始化為a*4 或12。然后調(diào)用main(),main() 調(diào)用meth() ,把值42傳遞給x。3個(gè)println ( ) 語句引用兩個(gè)static變量a和b,以及局部變量x 。

    注意:在一個(gè)static 方法中引用任何實(shí)例變量都是非法的。

    下面是該程序的輸出:

    Static block initialized.
    x = 42
    a = 3
    b = 12
    在定義它們的類的外面,static 方法和變量能獨(dú)立于任何對(duì)象而被使用。這樣,你只要在類的名字后面加點(diǎn)號(hào)運(yùn)算符即可。例如,如果你希望從類外面調(diào)用一個(gè)static方法,你可以使用下面通用的格式:

    classname.method( )

    這里,classname 是類的名字,在該類中定義static方法。可以看到,這種格式與通過對(duì)象引用變量調(diào)用非static方法的格式類似。一個(gè)static變量可以以同樣的 格式來訪問——類名加點(diǎn)號(hào)運(yùn)算符。這就是Java 如何實(shí)現(xiàn)全局功能和全局變量的一個(gè)控制版本。

    下面是一個(gè)例子。在main() 中,static方法callme() 和static 變量b在它們的類之外被訪問。

    class StaticDemo {
    static int a = 42;
    static int b = 99;
    static void callme() {


    System.out.println("a = " + a);
    }
    }


    class StaticByName {

    public static void main(String args[]) {
    StaticDemo.callme();
    System.out.println("b = " + StaticDemo.b);


    }
    }

    下面是該程序的輸出:

    a = 42
    b = 99


     

    static成員是不能被其所在class創(chuàng)建的實(shí)例訪問的。

    如果不加static修飾的成員是對(duì)象成員,也就是歸每個(gè)對(duì)象所有的。

    加static修飾的成員是類成員,就是可以由一個(gè)類直接調(diào)用,為所有對(duì)象共有的

    posted on 2009-03-02 12:03 lau 閱讀(174) 評(píng)論(0)  編輯  收藏 所屬分類: J2SE

    主站蜘蛛池模板: 亚洲狠狠色丁香婷婷综合| 国产V片在线播放免费无码| 日韩a在线观看免费观看| 中文字幕在线免费观看视频| 久久亚洲AV成人无码| 日本高清免费中文字幕不卡| 成人精品一区二区三区不卡免费看| 亚洲免费在线视频| 亚洲欧美成aⅴ人在线观看| 亚洲色偷偷狠狠综合网| 亚洲免费视频网址| 一日本道a高清免费播放| 久久亚洲精品国产精品黑人| 精品国产免费观看一区| 久久99免费视频| 国产精品亚洲一区二区三区在线观看| 国产成人精品免费视频动漫 | 国产亚洲综合视频| 久久国产亚洲精品麻豆| 日韩在线视频免费看| 黄色片免费在线观看| 国产AV日韩A∨亚洲AV电影| 久久久无码精品亚洲日韩按摩| 97公开免费视频| 人禽伦免费交视频播放| 亚洲一卡2卡三卡4卡无卡下载| 在线观看视频免费完整版| 伊人久久大香线蕉免费视频| 亚洲AV无码一区二区三区牲色| 在线不卡免费视频| 最新国产乱人伦偷精品免费网站 | 免费播放春色aⅴ视频| 先锋影音资源片午夜在线观看视频免费播放| 亚洲AV无码一区二区乱子伦| 国产午夜无码视频免费网站| 无码国产精品一区二区免费式直播| 精品亚洲成在人线AV无码| 久久伊人久久亚洲综合| 国产亚洲?V无码?V男人的天堂 | 日韩午夜免费视频| 国色精品卡一卡2卡3卡4卡免费|