靜態方法不能呼叫非靜態方法的原因

2021-08-20 03:08:33 字數 429 閱讀 7737

1.靜態方法優先於物件被建立

2.非靜態方法通過物件建立

3.靜態方法在記憶體中建立後,還沒有建立物件,所以不能呼叫非靜態方法和變數。

//null 型別呼叫靜態方法,輸出什麼?

public class test

public static void main(string args)

}問輸出什麼?

//輸出是print()

因為:1.print()是靜態方法,不用物件也可以呼叫,((test)null).print() 這種格式也可以。

2.null 可以轉換成任意引用型別

3.((test)null).print() 相當於 test t = null; t.print();

4.如果將print()方法的修飾符去掉,執行時會報空指標異常,因為是在靜態方法中呼叫非靜態方法。

靜態方法不能呼叫非靜態方法的原因

靜態方法是屬於類的,即靜態方法是隨著類的載入而載入的,在載入類時,程式就會為靜態方法分配記憶體,而非靜態方法是屬於物件的,物件是在類載入之後建立的,也就是說靜態方法先於物件存在,當你建立乙個物件時,程式為其在堆中分配記憶體,一般是通過this指標來指向該物件。靜態方法不依賴於物件的呼叫,它是通過 類...

為什麼靜態方法不能呼叫非靜態方法?

1.靜態方法是屬於類的,即靜態方法是隨著類的載入而載入的,在載入類時,程式就會為靜態方法分配記憶體,而非靜態方法是屬於物件的,物件是在類載入之後建立的,也就是說靜態方法先於物件存在。2.當你建立乙個物件時,程式為其在堆中分配記憶體,一般是通過this指標來指向該物件。靜態方法不依賴於物件的呼叫,它是...

java靜態方法不能呼叫非靜態方法的原因

靜態方法是屬於類的,即靜態方法是隨著類的載入而載入的,在載入類時,程式就會為靜態方法分配記憶體,而非靜態方法是屬於物件的,物件是在類載入之後建立的,也就是說靜態方法先於物件存在,當你建立乙個物件時,程式為其在堆中分配記憶體,一般是通過this指標來指向該物件。靜態方法不依賴於物件的呼叫,它是通過 類...