Java中靜態方法和非靜態方法的區別

2021-07-27 22:38:54 字數 736 閱讀 9900

靜態方法和非靜態方法的區別總結如下:

1、靜態方法屬於類所有,類例項化前即可使用;

2、非靜態方法可以訪問類中的任何成員,靜態方法只能訪問類中的靜態成員;

3、因為靜態方法在類例項化前就可以使用,而類中的非靜態變數必須在例項化之後才能分配記憶體;

4、static內部只能出現static變數和其他static方法!而且static方法中還不能使用this等關鍵字,因為它是屬於整個類;

5、靜態方法效率上要比例項化高,靜態方法的缺點是不自動進行銷毀,而例項化的則可以做銷毀;

6、靜態方法和靜態變數建立後始終使用同一塊記憶體,而使用例項的方式會建立多個記憶體。

主要區別:靜態方法在建立物件前就可以使用了,非靜態方法必須通過new出來的物件呼叫。

如:public class per

public string getname()

}上面這個類中的gettype方法,在沒有new物件前這就可以這樣用:

string type=per.gettype();//type="人類";

而getname方法則不能這樣使用,編譯都不會通過

getname必須這樣:

per p=new per();

string name=p.getname();//name="張三";

當然,gettype方法也可能通過物件呼叫:

string type=p.gettype();//type="人類";

靜態方法和非靜態方法

首先,兩者本質上的區別是 靜態方法是在類中使用staitc修飾的方法,在類定義的時候已經被裝載和分配。而非靜態方法是不加static關鍵字的方法,在類定義時沒有占用記憶體,只有在類被例項化成物件時,物件呼叫該方法才被分配記憶體。其次,靜態方法中只能呼叫靜態成員或者方法,不能呼叫非靜態方法或者非靜態成...

靜態方法和非靜態方法

靜態方法和非靜態方法 其次,靜態方法中只能呼叫靜態成員或者方法,不能呼叫非靜態方法或者非靜態成員,而非靜態方法既可以呼叫靜態成員或者方法又可以呼叫其他的非靜態成員或者方法。例子1 靜態方法的main方法訪問類中的非靜態成員方法。class test public static void main s...

java中靜態方法和非靜態方法覆蓋的區別

首先我們提供兩個類,基類為 parent 派生類為 child 在parent 中我們提供兩個方法,乙個是靜態方法 staticmethod 乙個是非靜態方法 nonstaticmethod 在child 類中我們覆蓋著兩個方法。class parent public static void sta...