国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

[java學(xué)習(xí)筆記](méi)java語(yǔ)言核心----面向?qū)ο笾畇tatic關(guān)鍵字

2019-11-14 15:28:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  • static關(guān)鍵字用處

    1. 用于修飾成員變量和成員函數(shù)

  • 被修飾后的成員具有以下特點(diǎn):

      1. 隨著類的加載而加載

      2. 優(yōu)先于對(duì)象存在

      3. 被所有對(duì)象所共享

      4. 可以直接被類名調(diào)用

  • 使用注意

      1. 靜態(tài)方法只能訪問(wèn)靜態(tài)成員;非靜態(tài)方法也可以訪問(wèn)靜態(tài)成員

      2. 靜態(tài)方法中不可以寫(xiě)this,super關(guān)鍵字

      3. 主函數(shù)是靜態(tài)的

  • 實(shí)例變量(成員變量)和類變量(靜態(tài)變量)的區(qū)別

    1. 生命周期不同

                           成員變量隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的回收而釋放;

                           靜態(tài)變量隨著類的加載而存在隨著類的消失而消失

                   2.   調(diào)用方式不同

                           成員變量只能被對(duì)象調(diào)用
                           靜態(tài)變量能被對(duì)象調(diào)用也能被類名調(diào)用(一般建議使用類名調(diào)用)

                   3.   別名不同

                          成員變量也叫實(shí)例變量
                          靜態(tài)變量也叫類變量

                   4.   數(shù)據(jù)的存儲(chǔ)位置不同

                          成員變量數(shù)據(jù)存儲(chǔ)在堆內(nèi)存中的對(duì)象中,所以是對(duì)象的特有數(shù)據(jù) 
                          靜態(tài)變量數(shù)據(jù)存儲(chǔ)在方法區(qū)(數(shù)據(jù)區(qū)或共享數(shù)據(jù)區(qū))的靜態(tài)區(qū)中,所以也叫對(duì)象的共享數(shù)據(jù)

  • 內(nèi)存圖解

      以下代碼在內(nèi)存中的執(zhí)行:

class Person{    PRivate String name;    private int age;    static String country = "CN";    public Person(String name, int age){        this.name = name;        this.age = age;    }    public void show(){        System.out.println(Person.country+":"+this.name+":"+this.age);    }    public static void method(){        System.out.println(Person.country);    }}class StaticDemo2{    public static void main(String[] args){        Person.method();                Person p = new Person("java",20);        p.show();    }}

內(nèi)存圖解為:

static

說(shuō)明:

  1. 當(dāng)執(zhí)行StaticDemo2這個(gè)類時(shí),就會(huì)在方法區(qū)中創(chuàng)建一個(gè)屬于該類的區(qū)域,并且加載默認(rèn)的構(gòu)造函數(shù),接著在StaticDemo2的靜態(tài)區(qū)中加載main方法。
  2. main方法進(jìn)棧,并開(kāi)始執(zhí)行第一句代碼:Person.method(); 由于是類名的調(diào)用,虛擬機(jī)會(huì)在classpath環(huán)境變量下找Person類(沒(méi)有配置classpath則在當(dāng)前目錄下找),找到后,就會(huì)把該類加載進(jìn)方法區(qū),同StaticDemo2也會(huì)分為靜態(tài)和非靜態(tài)區(qū)。
  3. 要執(zhí)行method方法,所以method方法進(jìn)棧,運(yùn)行 System.out.println(Person.country);代碼,輸出“CN”。return掉該方法后,該方法出棧。
  4. 執(zhí)行new Person對(duì)象的操作,該操作前上篇隨筆(構(gòu)造函數(shù)中)已有分析,這里不累述。
  5. 執(zhí)行完所有代碼后,main方法出棧。
  • 靜態(tài)代碼塊
static {    System.out.println("這是靜態(tài)代碼塊");}

 

    1.靜態(tài)代碼塊

              隨著類的加載而執(zhí)行,并且執(zhí)行一次。屬于類。

    2.作用

              用于給類進(jìn)行初始化。比如像javaAPI提供的Math類,全部為靜態(tài)的方法,不允許創(chuàng)建對(duì)象,這個(gè)時(shí)候不能用構(gòu)造 函數(shù)進(jìn)行初始化,因?yàn)闃?gòu)造函數(shù)一般是給對(duì)象初始化,不能創(chuàng)建對(duì)象時(shí)不可使用。所以就要使用靜態(tài)代碼塊來(lái)進(jìn)行一些初始化的操作。

  • 構(gòu)造代碼塊

不同于靜態(tài)代碼塊,是屬于類的代碼塊,如:

class Demo{    {        System.out.println("這是構(gòu)造代碼塊");    }
    //。。。}

和對(duì)象有關(guān)

可以給所有對(duì)象進(jìn)行初始化,構(gòu)造函數(shù)是給對(duì)應(yīng)的對(duì)象進(jìn)行針對(duì)性的初始化。

每次創(chuàng)建對(duì)象時(shí)都會(huì)執(zhí)行。靜態(tài)代碼塊是在類加載時(shí)執(zhí)行一次。

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 吴川市| 邵东县| 通江县| 奎屯市| 绵竹市| 垫江县| 方正县| 临江市| 巫山县| 望城县| 岳普湖县| 武宣县| 洪洞县| 黄龙县| 平山县| 时尚| 石屏县| 微山县| 普定县| 东丽区| 梓潼县| 海原县| 罗定市| 延安市| 商洛市| 鄂州市| 印江| 封丘县| 江油市| 手机| 新乐市| 正安县| 鄂伦春自治旗| 札达县| 台北市| SHOW| 县级市| 涟水县| 东方市| 繁昌县| 临漳县|