麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

[java學習筆記]java語言核心----面向對象之static關鍵字

2019-11-14 15:28:34
字體:
來源:轉載
供稿:網友
  • static關鍵字用處

    1. 用于修飾成員變量和成員函數

  • 被修飾后的成員具有以下特點:

      1. 隨著類的加載而加載

      2. 優先于對象存在

      3. 被所有對象所共享

      4. 可以直接被類名調用

  • 使用注意

      1. 靜態方法只能訪問靜態成員;非靜態方法也可以訪問靜態成員

      2. 靜態方法中不可以寫this,super關鍵字

      3. 主函數是靜態的

  • 實例變量(成員變量)和類變量(靜態變量)的區別

    1. 生命周期不同

                           成員變量隨著對象的創建而存在,隨著對象的回收而釋放;

                           靜態變量隨著類的加載而存在隨著類的消失而消失

                   2.   調用方式不同

                           成員變量只能被對象調用
                           靜態變量能被對象調用也能被類名調用(一般建議使用類名調用)

                   3.   別名不同

                          成員變量也叫實例變量
                          靜態變量也叫類變量

                   4.   數據的存儲位置不同

                          成員變量數據存儲在堆內存中的對象中,所以是對象的特有數據 
                          靜態變量數據存儲在方法區(數據區或共享數據區)的靜態區中,所以也叫對象的共享數據

  • 內存圖解

      以下代碼在內存中的執行:

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();    }}

內存圖解為:

static

說明:

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

 

    1.靜態代碼塊

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

    2.作用

              用于給類進行初始化。比如像javaAPI提供的Math類,全部為靜態的方法,不允許創建對象,這個時候不能用構造 函數進行初始化,因為構造函數一般是給對象初始化,不能創建對象時不可使用。所以就要使用靜態代碼塊來進行一些初始化的操作。

  • 構造代碼塊

不同于靜態代碼塊,是屬于類的代碼塊,如:

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

和對象有關

可以給所有對象進行初始化,構造函數是給對應的對象進行針對性的初始化。

每次創建對象時都會執行。靜態代碼塊是在類加載時執行一次。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av老司机久久| 嫩呦国产一区二区三区av | 欧美另类69xxxxx 视频 | 欧美不卡 | 欧美成人午夜影院 | 久久久成人精品视频 | 国产免费观看视频 | 草b视频在线观看 | 精品国内视频 | 午夜国产成人 | 成人在线视频免费看 | 精品少妇v888av | 伦一区二区三区中文字幕v亚洲 | 一级全毛片 | 逼片视频| 亚洲日韩精品欧美一区二区 | 蜜桃成品人免费视频 | 欧美黑大粗硬毛片视频 | 欧美精品一区自拍a毛片在线视频 | 一本色道久久久888 香蕉视频99 | 一日本道久久久精品国产 | 奶子吧naiziba.cc免费午夜片在线观看 | 中国的免费的视频 | 毛片在线免费播放 | 久久久久久久久浪潮精品 | 91在线精品亚洲一区二区 | 免费一级a毛片免费观看 | 中国fx性欧美xxxx | 欧美爱爱一区二区 | 斗罗破苍穹在线观看免费完整观看 | 色视频在线播放 | 成人午夜在线免费观看 | 亚洲欧美不卡视频 | 欧美激情第一区 | 久久艹艹艹 | 久久免费视频3 | 久久人人97超碰国产公开结果 | 中国女人内谢8xxxxxx在 | 国产va在线观看免费 | 欧美一区二区网站 | 精品一区在线视频 |