static關鍵字的使用

2022-09-08 04:09:09 字數 1574 閱讀 9659

變數

1. 區域性變數

普通區域性變數是再熟悉不過的變數了,在任何乙個函式內部定義的變數(不加static修飾符)都屬於這個範疇。編譯器一般不對普通區域性變數進行初始化,也就是說它的值在初始時是不確定的,除非對其顯式賦值。

普通區域性變數儲存於程序棧空間,使用完畢會立即釋放。

靜態區域性變數使用static修飾符定義,即使在宣告時未賦初值,編譯器也會把它初始化為0。且靜態區域性變數儲存於程序的全域性資料區,即使函式返回,它的值也會保持不變。

變數在全域性資料區分配記憶體空間;編譯器自動對其初始化

其作用域為區域性作用域,當定義它的函式結束時,其作用域隨之結束

2. 全域性變數

全域性變數定義在函式體外部,在全域性資料區分配儲存空間,且編譯器會自動對其初始化。

普通全域性變數對整個工程可見,其他檔案可以使用extern外部宣告後直接使用。也就是說其他檔案不能再定義乙個與其相同名字的變數了(否則編譯器會認為它們是同乙個變數)。

靜態全域性變數僅對當前檔案可見,其他檔案不可訪問,其他檔案可以定義與其同名的變數,兩者互不影響。

在定義不需要與其他檔案共享的全域性變數時,加上static關鍵字能夠有效地降低程式模組之間的耦合,避免不同檔案同名變數的衝突,且不會誤使用。

函式函式的使用方式與全域性變數類似,在函式的返回型別前加上static,就是靜態函式。其特性如下:

靜態函式只能在宣告它的檔案中可見,其他檔案不能引用該函式

不同的檔案可以使用相同名字的靜態函式,互不影響

非靜態函式宣告過以後,可以在另乙個檔案中直接引用,甚至不必使用extern宣告,宣告全域性函式預設前面帶有extern

物件導向

靜態資料成員

在類內資料成員的宣告前加上static關鍵字,該資料成員就是類內的靜態資料成員。其特點如下:

靜態資料成員儲存在全域性資料區,靜態資料成員在定義時分配儲存空間,所以不能在類宣告中定義

靜態資料成員是類的成員,無論定義了多少個類的物件,靜態資料成員的拷貝只有乙個,且對該類的所有物件可見。也就是說任一物件都可以對靜態資料成員進行操作。而對於非靜態資料成員,每個物件都有自己的乙份拷貝。

由於上面的原因,靜態資料成員不屬於任何物件,在沒有類的例項時其作用域就可見,在沒有任何物件時,就可以進行操作

和普通資料成員一樣,靜態資料成員也遵從public, protected, private訪問規則

靜態資料成員的初始化格式:《資料型別》《類名》::《靜態資料成員名》=《值》

類的靜態資料成員有兩種訪問方式:《類物件名》.《靜態資料成員名》 或 《類型別名》::《靜態資料成員名》

同全域性變數相比,使用靜態資料成員有兩個優勢:

靜態資料成員沒有進入程式的全域性名字空間,因此不存在與程式中其它全域性名字衝突的可能性

可以實現資訊隱藏。靜態資料成員可以是private成員,而全域性變數不能

靜態成員函式

與靜態資料成員類似,靜態成員函式屬於整個類,而不是某乙個物件,其特性如下:

靜態成員函式沒有this指標,它無法訪問屬於類物件的非靜態資料成員,也無法訪問非靜態成員函式,它只能呼叫其餘的靜態成員函式

出現在類體外的函式定義不能指定關鍵字static

非靜態成員函式可以任意地訪問靜態成員函式和靜態資料成員

使用static關鍵字

在前面的課程中,你學到了區域性變數 有塊範圍 和全域性變數 有計畫的範圍 還有另乙個作用域的變數,可以水平 檔案範圍。檔案範圍內的變數可以被訪問的任何功能或嵌在乙個單一的檔案。申報檔案作用域的變數,簡單地宣告乙個變數,一塊外 同乙個全域性變數 但使用static關鍵字 123 4567 static...

使用static關鍵字

在前面的課程中,你學到了區域性變數 有塊範圍 和全域性變數 有計畫的範圍 還有另乙個作用域的變數,可以水平 檔案範圍。檔案範圍內的變數可以被訪問的任何功能或嵌在乙個單一的檔案。申報檔案作用域的變數,簡單地宣告乙個變數,一塊外 同乙個全域性變數 但使用static關鍵字 123 4567 static...

static關鍵字使用

版本 v1.0 public class study 6 1 class person4 靜態使用注意事項 1.靜態方法只能訪問靜態成員 非靜態的方法既可以訪問靜態也可以訪問非靜態 這點注意先後順序就可以理解 2.靜態方法中不可以定義this,super等關鍵字 因為靜態優先於物件存在。所以靜態方法...