1. 程式人生 > >java 基礎之成員變數,成員方法和區域性變數,例項方法

java 基礎之成員變數,成員方法和區域性變數,例項方法

以下都是總結的簡單說法,定義上可能沒那麼嚴謹。

成員變數:類裡定義的變數。

區域性變數:方法裡定義的變數。

其中成員變數又分為:例項變數和類變數(靜態變數)

類變數:static修飾的變數

注:如果區域性變數和成員變數的名稱相同,那麼成員變數被隱藏,即方法內失效,方法中如需要訪問該類中的成員變數,則需要加上關鍵字 this。

        例項方法既能操作成員變數也能操作類變數,而類方法只能操作類變數。

        例項方法能呼叫例項方法和類方法,類方法只能呼叫類方法。

只要記住,static修飾的只能操作static修飾的,而無static修飾的都能操作。

簡單的例子:

public class Man
{
	static String head;
	public void func()
	{
		head="大頭";
	}

	public static void main(String[] args) 
	{
		Man man1=new Man();
		Man man2=new Man();
		man1.func();
		System.out.println(man2.head);
	}
}

以上的類編譯執行後的結果是  ”大頭“

public class Man
{
    String head;
	public void func()
	{
		head="大頭";
	}

	public static void main(String[] args) 
	{
		Man man1=new Man();
		Man man2=new Man();
		man1.func();
		System.out.println(man2.head);
	}
}


以上程式碼編譯執行後則輸出的結果是null

這也就是說,靜態變數屬於類,而不屬於物件。
new 物件的時候,物件將被分配不同的記憶體空間,準確的說,不同的物件分配不同的記憶體空間,而如果類中含有類變數,則所有物件的類變數都被分配給相同的一處記憶體空間,改變其中一個物件的這個類變數都會影響其他物件的這個類變數,也就是說,物件共享類變數。

當java執行程式時,類的位元組碼檔案被載入到記憶體,如果該類沒有建立物件,類的例項變數不會分配記憶體,但是類中的類變數,在該類載入到記憶體時,就分配了相應的記憶體空間。如果該類建立物件,不同的物件的例項變數互不相同,即分配不同的記憶體空間,而類變數不再重新分配記憶體,類變數的記憶體空間直到程式退出時,才釋放記憶體。