首先,這三種語言,非靜態變量在定義時不會自動初始化,必須初始化纔可以使用否則報錯,靜態變量會自動初始化。特殊的,C的變量必須在語句塊頭部定義,否則報錯。靜態變量的存放地址,在整個程序運行期間都是固定不變的。
C和C++
全局變量:在與main平行的位置,不在任何語句塊內定義的變量,在程序的所有位置均有效。
局部變量:其他語句塊內定義的變量稱爲局部變量。
全局變量都是靜態變量,局部變量定義時如果前面加了“static”關鍵字,則該變量也成爲靜態變量。
靜態變量的存放地址,在整個程序運行期間都是固定不變的
非靜態變量(一定是局部變量)地址每次函數調用時都可能不同,在函數的一次執行期間不變
如果未明確初始化,則靜態變量會被自動初始化成全0(每個bit都是0),局部非靜態變量的值則隨機
Java:
Java中一個類通過使用new運算符可以創建多個不同的對象,接着這些對象會被分配不同的變量,類體中包括成員變量和方法兩部分,而其中的成員變量又可以分爲實例變量和類變量兩部分,實例變量和類變量在聲明上的區別就是有無static關鍵字。
java中類變量(靜態變量)的初始化:
變量類型 | 初始值 |
int,byte,short,long | 0 |
char | 一個空格 |
double,float | 0.0 |
引用值(比如String) | null |