類變數

類變數

在java中,類變數(也叫靜態變數)是類中獨立於方法之外的變數,用static 修飾。(static表示“全局的”、“靜態的”,用來修飾成員變數和成員方法,或靜態代碼塊(靜態代碼塊獨立於類成員,jvm載入類時會執行靜態代碼塊,每個代碼塊只執行一次,按順序執行))。

基本介紹

  • 中文名:類變數
  • 外文名:class‘s variables
  • 存在:java
  • 分類:類變數和靜態變數
static 是C++中很常用的修飾符,它被用來控制變數的存儲方式和可見性,下面我將從 static 修飾符的產生原因、作用談起,全面分析static 修飾符的實質。
static 的兩大作用:
、控制存儲方式:
static被引入以告知編譯器,將變數存儲在程式的靜態存儲區而非棧上空間。
1、引出原因:函式內部定義的變數,在程式執行到它的定義處時,編譯器為它在棧上分配空間,大家知道,函式在棧上分配的空間在此函式執行結束時會釋放掉,這樣就產生了一個問題: 如果想將函式中此變數的值保存至下一次調用時,如何實現?
最容易想到的方法是定義一個全局的變數,但定義為一個全局變數有許多缺點,最明顯的缺點是破壞了此變數的訪問範圍(使得在此函式中定義的變數,不僅僅受此函式控制)。
2、 解決方案:因此C++ 中引入了static,用它來修飾變數,它能夠指示編譯器將此變數在程式的靜態存儲區分配空間保存,這樣即實現了目的,又使得此變數的存取範圍不變。
二、控制可見性與連線類型 :
static還有一個作用,它會把變數的可見範圍限制在編譯單元中,使它成為一個內部連線,這時,它的反義詞為”extern”.
Static作用分析總結:static總是使得變數或對象的存儲形式變成靜態存儲,連線方式變成內部連線,對於局部變數(已經是內部連線了),它僅改變其存儲方式;對於全局變數(已經是靜態存儲了),它僅改變其連線類型。
類中的static成員:
一、出現原因及作用:
1、需要在一個類的各個對象間互動,即需要一個數據對象為整個類而非某個對象服務。
2、同時又力求不破壞類的封裝性,即要求此成員隱藏在類的內部,對外不可見。
類的static成員滿足了上述的要求,因為它具有如下特徵:有獨立的存儲區,屬於整個類。
二、注意:
1、對於靜態的數據成員,連線器會保證它擁有一個單一的外部定義。靜態數據成員按定義出現的先後順序依次初始化,注意靜態成員嵌套時,要保證所嵌套的成員已經初始化了。消除時的順序是初始化的反順序。
2、類的靜態成員函式是屬於整個類而非類的對象,所以它沒有this指針,這就導致了它僅能訪問類的靜態數據和靜態成員函式。

相關詞條

熱門詞條

聯絡我們