變數
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等關鍵字 因為靜態優先於物件存在。所以靜態方法...