一、棧和堆
在程式運行時,它的資料是儲存在記憶體中的。而類型決定了一個資料項目需要多大的記憶體、儲存在什麼地方以及如何儲存。運行中的程式使用兩個記憶體地區來儲存資料——棧和堆。
1.棧
1).定義
棧是一個記憶體數組,是一個後進先出(LIFO,last-in first-out)的資料結構。程式在編譯期間就已經分配好了它所需要的棧空間的大小。棧一般用於儲存變數的值、當前程式的執行環境和傳遞個方法的參數。
2).特徵
資料只能從棧頂插入和刪除;把資料插入棧頂稱為“入棧”(push);把資料從棧頂刪除稱為“出棧”(pop)。
2.堆
堆是一塊記憶體地區,在堆裡可以分配大塊的記憶體用於儲存某類型的資料對象。與棧的存取方式不同,堆裡的記憶體能夠以任何順序存入和移除。
二、變數
1.變數定義
變數是程式為記憶體空間取的一個名字,它表示程式執行時儲存在記憶體中的資料。根據變數所在的位置,可以把變數分為以下四種:
1).本地變數:定義在方法中的變數,用於在方法的範圍儲存臨時資料。
2).參數:定義在方法的參數列表中的臨時變數,用於從一個方法到另一個方法傳遞參數。
3).欄位:作為類型的成員,定義在類型中,用於儲存與類型或類型的執行個體相關的資料。
4).數組元素:定義在數組中,作為資料項目的有序集合的一個成員。
2.變數的聲明和初始化
變數的聲明完成兩件事情:
1).為變數命名,並且為它指定一種類型。
2).讓編譯器為它分配一塊記憶體空間。
變數的聲明和初始化經常通過一條語句來完成。就是聲明一個變數,並且為變數賦初值。我在這裡分開寫,以說明整個過程。
1 // 1.聲明一個整型變數x2 int x;3 // 2.初始化x4 x = 10;5 // 3.使用變數6 Console.WriteLine(x);
3.多重變數聲明
在一條聲明語句可以聲明多變數。但必須遵守以下規則:
1).多個變數的類型必須相同,並且只能在語句的開頭寫一次類型。
2).多個變數名之間用逗號運算式分隔。
3).每個變數名後面都可以包含初始化語句。
1 // 用一條語句聲明3個整型變數x,y和z2 int x, y = 10, z = 1000;
4.變數的自動初始化
一些類型的變數在聲明的時候如果沒有初始化,就會被自動設為該類型的預設值;而另一些不能自動初始化為預設值的類型的變數的值在賦值之前為“未定義”。
本地變數和方法的參數是不能被自動初始化的,而類的欄位和數組元素是可以被自動初始化的。