轉自:http://blog.sina.com.cn/s/blog_742350ef0100qt42.html ———————————————————————————————————— 先看下面兩段程序: 程序一: 程序二: ---------------------------------------------------------------------------------------------------------- 第一個程序很正常,編譯時不會出錯。第二個程序編譯時會提示如下錯誤: D:\Program\java\test>javac Variable.java 之所以會出現這樣的錯誤是因為:成員變量有默認值,(被final修飾且沒有static的必須顯式賦值),局部變量不會自動賦值 =========================================================== 類體分為兩部分。變量定義部分所定義的變量被稱為類的成員變量,在方法體中定義的變量和方法的參數都被稱為局部變量 java中成員變量和局部變量的區別
1.成員變量可以被public,protect,private,static等修飾符修飾,而局部變量不能被控制修飾符及static修飾;兩者都可以定義成final型
2.成員變量存儲在堆,局部變量存儲在棧
3.存在時間不同
4.成員變量有默認值,(被final修飾且沒有static的必須顯式賦值),局部變量不會自動賦值
-------------------------------------------------------------------------------------------------------------
顧名思意了
什么是局部,方法內部,塊內部都是局部,執行指令退出那個局部,局部變量自動清除 比如方法中,不用說 塊中 { int i=0; //這是一個局部變量,它的作用范圍就在其中 } 成員變量就會涉及到誰的成員,類的成員?實例的成員? class A{ int i=0; //實例的成員 static j=1;//類的成員 } static 的差別,是否依賴於實例而存在 ---------------------------------------------------------------------------------------------------------- 成員變量:作為類的成員而存在,直接存在於類中。 局部變量:作為方法或語句塊的成員而存在,存在於方法的參數列表和方法定義中。 局部變量在使用前必須被程序員主動的初始化,和此形成對比,系統中的成員變量則會被系統提供一個默認的初始值。所以在語法上,類的成員變量能夠定義后直接使用,而局部變量在定義后先要賦初值,然后才能使用。
所有類的成員變量可以通過this來引用。成員變量又分成倆中類型:實例變量和靜態變量。靜態變量在定義時要使用static關鍵字。 |