java 構造方法,static關鍵字,main方法修飾解釋
首先,一個java檔案中,只能有一個對外公開的類,也就是 只能有一個public修飾的類.注意:這裡的java檔案,也就是 建立的類檔案.java檔案(經過JRE編譯成.class檔案在虛擬機器上執行).
構造方法: 對物件的屬性(成員變數)初始化.
寫法:1.方法名必須與類相同
2.沒有返回值型別
3.沒有返回值即沒有return
public class ArrayTools {
//這裡定義了一個無參建構函式
private ArrayTools() {
}
構造方法是系統自動呼叫的,在初始化物件(new物件)時自動呼叫.無法自己呼叫構造方法.如果是隻有一個無參建構函式,理論上可以不寫,由系統自動補全.但是講到下面有引數的建構函式的情況下另說.
建構函式的過載
建構函式也符合函式過載規則
建構函式注意事項: 如果定義了一個有參的建構函式,那麼必須還要把無參建構函式補上,因為此時系統不會再幫你寫無參構造函數了.不寫會報錯.
static關鍵字
static (靜態)可以修飾變數,此時的變數就叫靜態變數.同樣,它也可以修飾方法,此時別修飾的方法就叫靜態方法.
靜態變數:不依賴物件,靜態變數被載入的時候,物件還沒有建立.
靜態變數的特點:1.隨著類的載入而產生
2.建立優先於物件存在
3.可以使用類名去呼叫
使用靜態變數的好處:對於多次需要使用的變數,把它們變成靜態變數,可以節省記憶體空間,因為一旦被創建出來的靜態變數,它們都是共享的.
靜態變數與成員變數的區別:
靜態變數成員變數
1.所屬不同屬於類(類變數)屬於物件,(例項變數)
2.記憶體中儲存位置不同 方法去的靜態區 堆
3.載入到記憶體的時機不同 隨著類載入而載入隨著物件建立而建立4.
4.呼叫方法不同直接使用類呼叫例項的物件才能呼叫
靜態方法中,不能使用成員變數,只能使用靜態變數和靜態方法.
靜態方法呼叫,使用類名.方法呼叫, 靜態方法又叫類方法.
一般java檔案執行後,記憶體表現步驟:
1.類首先在執行時會被載入到方法區
2.載入類方法區的同時,掃描是否有靜態變數,方法.有的話就直接載入到方法區裡的靜態區
3.main 方法入棧(壓棧)
4.如果main方法有new物件,就在堆記憶體中建立物件
5.把地址賦給main方法中定義物件的物件名
6.同理,如果main方法裡有其他方法,依次進入,本著先進後出的棧空間原則,彈出棧之後,其在方法裡定義的區域性變數和宣告的變數都會釋放,到最後main 方法也出棧
7.程式結束,此時,就此java檔案而已棧空間都已經釋放,堆空間裡的物件都變成垃圾,等著某一時刻被GC 回收
public class Testmain {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
解釋main 方法各個關鍵字之前,首先強調一點:main 並不是Java 關鍵字,它只是JVM在執行.class 檔案時的入口標誌.
Public JVM呼叫main,需要訪問的許可權
static JVM呼叫main時候,不再需要建立物件
void 不需要main 有任何返回值
main 在呼叫程式的時候,程式的入口,並不是關鍵字
String[] args 接收才能夠鍵盤的輸入(基本沒用,瞭解即可)
上述幾個單詞中,能改的也就只有string[] 陣列的形參名字(args) 能改 . (不過意義不大)
其他的,一概不能更改,約定俗成的,新手也不需要在這方面做過多糾結.照著打,打就了就懂了.程式是寫出來的,多打,多練,終會成功!