1、 靜态全局變量和靜态局部變量都是靜态存 儲方 式, 靜态變量就是全局變量 ;
2、 靜态局部變量在函數内定義,但不像 自動變量 那樣,當調用時就存 在,退出函數時就 消失。 靜态局部變量始終存在着 ,也就是說它的生存期為整個源程式。
3、 靜态局部變量的生存期雖然為整個源程式,但是其 作用域 仍與自動變量相同,即隻能在定義該變量的函數内使用該變量。退出該函數後, 盡管該變量還繼續存在,但不能使用它。
4、 允許對構造類靜态局部量賦初值。若未賦以初值,則由系統自動指派。數值型變量自動賦初值0,字元型變量賦空字元。
5、對基本類型的靜态局部變量若在說明時未賦以初值,則系統自動賦予0值。而對自動變量不賦初值,則其值是不定的。 根據靜态局部變量的特點, 可以看出它是一種生存期為整個源檔案的量。雖然離開定義它的函數後不能使用,但如再次調用定義它的函數時,它又可繼續使用, 而且儲存了前次被調用後留下的值。 是以,當多次調用一個函數且要求在調用之間保留某些變量的值時,可考慮采用靜态局部變量。雖然用全局變量也可以達到上述目的,但全局變量有時會造成意外的副作用,是以仍以采用局部靜态變量為宜。
public class StaticTest{
static int f=1;//java聲明靜态變量要放到函數外面,結果和c的結果一樣
int fun(int n){
f = f * n;
return f;
}
public static void main(String[] args){
StaticTest st = new StaticTest();
for(int i = 1; i <= 5; i++)
System.out.println(st.fun(i));
}
}
6、 靜态全局變量則限制了其作用域, 即隻在定義該變量的源檔案内有效, 在同一源程式的其它源檔案中不能使用它。在定義它的源檔案中可以在調用其他源檔案中方法時當做實參使用。
7、全局變量本身就是靜态存儲方式,雖在于非靜态全局變量的作用域是整個源程式, 當一個源程式由多個源檔案組成時,非靜态的全局變量在各個源檔案中都是有效的。
8、從以上分析可以看出, 把局部變量改變為靜态變量後是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜态變量後是改變了它的作用域, 限制了它的使用範圍。是以static 這個說明符在不同的地方所起的作用是不同的。應予以注意。
9、java中private,public,protected作用範圍
轉自:http://blog.csdn.net/disadministrator/article/details/50278043
轉自:http://tydldd.iteye.com/blog/1732592
1、public:public表明該資料成員、成員函數是對所有使用者開放的,所有使用者都可以直接進行調用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财産神聖不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected對于子女、朋友來說,就是public的,可以自由使用,沒有任何限制,而對于其他的外部class,protected就變成private。
作用域 目前類 同一package 子孫類 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不寫時預設為friendly
一個在類A中被修飾為private的變量, 不能被傳到b 類中用吧