關鍵字static是乙個修飾符,其可以修飾一下幾種:
1,屬性;2,方法;3,語句塊;4,內部類。
static代表的是類相關,static修飾的東西,所有的物件共享(共享同一塊的記憶體區域)。其修飾的一些東西放在了static池中(堆記憶體中一塊新的記憶體區域)。池雖然是堆裡的一塊區域,但是同堆的最大的不同就是:常駐記憶體,反覆利用。、
常見的池有:資料庫連線池,string常量池,執行緒池,static池。
static池的作用:
static的屬性和方法可以用 物件. 這種方式呼叫,但做好使用 類名. 呼叫。(用物件. 呼叫static的屬性,可讀性差,因為,非static的屬性也可以用物件.的方式呼叫,這樣我們不容易看出呼叫的屬性是static的還是非static的。還有就是,類名.呼叫,不需要建立物件,很明顯能夠節省記憶體的開銷。)
public class teststatic
public teststatic()
public static void main(string args)
}public class tests
}
static的方法不能訪問非static的屬性。靜態的東西存在比非靜態的東西早,這也就是為什麼能用不建立物件,卻能用類名.呼叫的原因。非static的屬性和方法在建立物件的時候才能夠在記憶體中申請空間,而static的東西在用的時候,可能沒有物件。也就是說,類名.(static屬性或者方法)的時候,記憶體中可能沒有物件。所以跟物件相關的一些東西都不能在static的部分出現。還有就是static的方法在重寫的時候,必須使用static的方法去覆蓋(即重寫後的方法也必須是static的)。
既然static的修飾的東西(屬性,方法,語句塊,內部類)比建立物件的時候還早,那他們究竟在什麼時候到到記憶體中呢?可以這樣說,通過上面那段**,可以告訴我們,static修飾的東西都是在類載入的時候進入記憶體中的。虛擬機器在載入類的時候,需要遵循乙個原則:just in time。即在用的時候載入。這有使用靜態語句快才能看出來。
語句塊:凡是在類裡邊寫一大括號,在括號裡邊直接寫語句,都算作是語句快。而靜態語句快則是在語句塊前邊加static就可以了。通過上邊的**可以告訴我們:
結論1:語句塊在構造物件的時候執行,在執行構造前執行。
結論2:靜態的語句塊,先與main方法執行,即在類載入的時候執行。
結論3:申明乙個變數時,類不會被載入(符合類載入的原則just in time)。
結論4:構造物件的時候,會載入類。
結論5:類名.的時候也會載入類。
static相關的一些程式設計心得
static的一些介紹 1.使用static宣告變數 避免棧中陣列越界導致不可預知錯誤 include include includeusing namespace std int main temp right temp 1 break for int i b left i temp 1 i te...
學習Javaweb的一些相關知識
1.js動態新增元素的方式 使用createlement string tag 書寫方式 var li document.createlement li 使用li元素作為例子。li.classname 這樣做可以直接設定樣式 上面的寫法還可以寫成 li.setattribute 屬性key 屬性va...
關於補碼的一些相關知識
在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值位統一處理 同時,加法和減法也可以統一處理。此外,補碼與原碼的的相互轉換,其運算過程是相同的,不需要額外的硬體電路。1.正數的補碼 正整數的補碼與原碼相同,ie 9的補碼是00001001。2.負數的補碼 求負整數的補...