java中的靜態變量和靜態方法

1、java中變量分爲靜態變量和實例變量;帶static關鍵字的爲靜態變量,不帶static關鍵字的爲實例變量

2、java中方法分爲靜態方法和實例方法;帶static關鍵字的爲靜態方法,不帶static關鍵字的爲實例方法

靜態變量和靜態方法屬於類,實例變量和實例方法屬於對象。

例如

public class A {

	private int i = 0;
	
	public static int count = 20;
        
        public void test(){}

 }

如果這樣訪問:

A.i,這樣是編譯不通過的,因爲實例變量(屬性)屬於對象,這樣直接通過類A類訪問,A會在包含類A的類信息的方法區內查找i變量,查找不到,而不會去堆內存裏面去查找。同理A.test()。

另外,因爲實例變量屬於對象,用A.i訪問,JVM不知道到底是訪問哪個對象的i屬性值,所以這樣訪問是非法的。


實例方法訪問權限:

實例方法內可以調用靜態方法和靜態變量,可以調用實例變量和實例方法。


靜態方法訪問權限:

靜態方法內不能調用實例方法和實例屬性,可以調用靜態變量和靜態方法。


jvm只會爲靜態變量分配一次內存,在jvm加載類的時候就會完成對靜態變量內存的分配;而實例變量,每次創建一個對象,就會分配一次內存。

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