this關鍵字、static關鍵字、代碼塊

this關鍵字的作用:

              1、在Java中任何方法中都一個this變量,這個變量用來記錄調用這個方法的那個對象。

                     this指向調用這個方法的那個對象。

              2、可以使用this區別成員變量和局部變量同名問題。

              3、調用構造方法

代碼:

        

       boolean compareByAge( Person otherPerson)

       {

              /*書寫具體的比較方式:

              if(this.age == otherPerson.age  )

              {

                     return true;

              }

 

       使用靜態修飾成員方法注意事項:

              1、靜態方法可以被類名調用,因爲靜態修飾的類中的內容是在使用這個類的class文件時,

                     這些靜態的內容就被加載到內存中,並且已經初始化完成,就可以執行開始運行了。

             

              2、靜態修飾的方法,只能調用靜態方法,而不能去調用非靜態的方法。

                     靜態的是在類加載的時候就準備完成,可以通過類名直接去調用的方法,

                     而非靜態的方法需要創建本類的對象來調用。而在類加載的時候並不一定就會創建出對象,

                     沒有對象,非靜態的方法就無法運行。

 

              3、非靜態的方法可以調用靜態方法。

                     非靜態方法是通過對象調用的,既然已經有了對象了,說明當前這個類早已經加載完成了,

                     那麼靜態的已經準備就緒。

 

              4、靜態僅僅是改變了方法的調用方式,靜態的方法可以被類名調用,也可以被對象調用。

 

              5、記住;任何方法要運行,必須被調用。方法不調用是不會運行的。

 

              6、靜態方法中不能使用this關鍵字,也不能使用super關鍵字。

                     this表示當前調用這個方法的那個對象,而在靜態方法運行的時候,是不需要對象的

 

 

       Main方法是靜態的:

              public static void main(String[] args)

      

       當我們要想讓某個類獨立運行的時候,需要在這個類中添加main方法,

       而程序要運行其實是我們在dos窗口中輸入了

       java類名  回車  JVM啓動

       JVM就會去加載當前指定的這個名稱的那個class文件

       把這個class文件加載完成之後,JVM就開始嘗試去運行這個class文件,

       JVM就會使用當前指定的  類名.main  運行這個類中的main方法

       而一個方法可以通過類名調用,要求這個方法必須是靜態的。

 

       voidmain方法是程序的入口,主要是由JVM調用,只要讓程序運行起來就可以,而不需要在main方法

              運行完成之後給JVM返回任何結果,那麼就把返回值類型書寫成void類型

       main固定寫法的方法名,表示程序的入口

       String[]args  main方法接收的參數,JVM在調用main方法的時候,傳遞的數據存放在args這個字符串數組中

              JVM再調用方法的時候,其實是這樣調用:

                     類名.main(new String[0]);

                     int[]arr = new int[0];


靜態成員變量和非靜態成員變量區別:

              1、在內存中的存儲位置不同:

                     靜態成員變量存放在方法區的靜態區中

                     非靜態成員變量需要隨着對象的創建才能在堆中出現,沒有對象,就沒有非靜態成員變量

              2、在內存中的生命週期不同:

                     靜態成員變量是在類加載的時候隨着類加載就存放在方法區的靜態區中,直到class文件被從方法區卸載掉,那麼這個靜態

                            成員變量纔會消失。

                     非靜態的成員變量隨着對象的創建在堆中出現,隨着對象的消失就消失了。

                            當所有的程序中沒有任何引用再指向這個對象時,這個對象就變成垃圾,等待垃圾回收器收走。

 

              3、它們在內存中出現的時間不同:

                     靜態成員變量是在類加載的時候就出現了

                     非靜態成員變量是在對象創建的時候纔出現

             

              4、變量的初始化時間不同:

                     靜態成員變量是在類加載的時候隨着類的加載就在方法區的靜態區中出現,並且緊接着就會給起進行初始化

                     非靜態成員變量是在創建對象的時候出現,先要默認初始化,然後依賴於構造方法進行顯示初始化。

 

              靜態成員方法是可以調用靜態的成員變量。


 

靜態代碼塊

代碼塊代表一段獨立的代碼,並使用大括號把這段代碼包裹起來。

{

代碼 

}

代碼塊。

 

靜態代碼塊:

在代碼的前面加上靜態的關鍵字:

static {

代碼;

}

 

       靜態代碼塊是在類加載的時候就會運行的代碼塊。這個代碼塊不需要認爲的去調用它,就會自動的運行。

 

       當我們在啓動程序的時候,如果程序在啓動完成就要加載完部分數據,作爲程序啓動的初始數據,這時就可以把加載這部分初始數據的代碼書寫在類中的靜態代碼塊中。

 

構造代碼塊

       構造代碼塊:

              構造方法它是在創建對象的時候會執行的方法,並且是給特定的對象進行初始化的方法。

 

              如果在類的成員位置上直接書寫{} 這段代碼就稱爲構造代碼塊

 

              構造代碼塊是在創建對象的時候執行的代碼塊。而靜態代碼塊只是在類加載的時候運行一次,以後不再運行。

 

              如果在一個類中有多個構造方法,當多個構造方法中有相同的初始化代碼時,而這些代碼如果在每個構造方法中

              都書寫的話,會導致代碼嚴重的重複,就會可以把這部分重複的代碼提取到構造代碼塊中。

 

       靜態代碼塊:是在類加載的時候運行,並且只運行一次,因此把靜態代碼塊稱爲給當前這個類進行初始化的。

       構造代碼塊:是在每次創建對象的都會執行的代碼塊,因此把構造代碼塊成爲給所有對象進行初始化的代碼塊。

 

 

局部代碼塊

       局部代碼塊:

              它的格式:

                     {

                            代碼;

                     }

              它如果寫在的類的成員位置上,就變成構造代碼塊,如果把它寫在方法體中,或者寫在靜態代碼塊,或者寫在構造代碼塊中

              就變成局部代碼塊了。

             

              局部代碼塊僅僅是爲了限定某些變量的作用範圍,即就是限定某個變量的生命週期

 

              當我們在書寫代碼的時候,如果某些變量在程序某些位置上使用,在這個位置後不再使用,這時可以使用局部代碼塊把這些封裝起來,

              限定這個變量的生命週期。

 

總結常用關鍵字和類中成員位置可以寫內容

       學習面向對象中常用的關鍵字:

              public 權限關鍵字,表示權限最大,在任何地方都可以訪問被public修飾的成員

              private 私有關鍵字,被它修飾的成員,只能在本類中訪問。

              this 表示當前某個對象。

              new 創建對象的

              static 它主要是用來修飾類中的成員(成員變量、成員方法),它不能修飾構造方法。構造方法是創建對象時候自定執行方法

                     被靜態修飾的內容,如果沒有被私有修飾,那麼在本類以外的地方都可以通過類名調用。

              class 定義類

 

       一個類的成員位置上都能書寫什麼東東?

              成員變量

              成員方法

              構造方法

              靜態代碼塊

              構造代碼塊

       一個類的成員位置上是不能書寫普通的語句,打印語句,循環語句,判斷語句等都不可以。


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