本文目錄一覽:
- 1、昆明Java培訓:為什麼Java中的局部變數必須要初始化?
- 2、JAVA中局部變數和成員變數的區別
- 3、在Java中,為什麼類變數不能是局部變數?
- 4、java什麼是成員變數和局部變數
- 5、Java中什麼是局部變數,什麼是類變數,怎麼用this
- 6、什麼是java的局部變數、成員變數和全局變數?
昆明Java培訓:為什麼Java中的局部變數必須要初始化?
現在假如你是java語言的開發者,你已經將對象保存在了堆內存中,而將局部變數保存在了棧內存中,你會怎麼做呢?Java中的變數分為類變數,成員變數和局部變數,分別位於JVM的方法區、堆內存和棧內存中。
類變數和成員變數都可以在類首次載入和類初始化時,給出默認值,但是局部變數就必須要在使用前賦值。
實際上,Java完全可以設計成局部變數不需要初始化,只要作者們高興。
事實上,就有這樣的語言,比如C++。
當然,C++不強制必須初始化,不代表就不用初始化,實際上,C++開發者也都是建議對局部變數初始化,以防止出現野指針這類事情。
其實,不管是局部變數還是成員變數,都是必須要初始化的,那為什麼成員變數會自動初始化?其實正是因為成員變數屬於對象,而對象是保存在堆中的,所以jvm就在初始化類的時候把成員變數初始化呢,而如果我們在調用方法的時候,還要jvm去將局部變數也進行初始化,是不是對會影響到性能呢?因此,直接強制局部變數必須要初始化反而更好。
JAVA中局部變數和成員變數的區別
根據定義變數位置的不同,可以將變數分為成員變數和局部變數
成員變數是在類範圍內定義的變數
局部變數是在一個方法內定義的變數
成員變數可以分為:
實例屬性 (不用static修飾):隨著實例屬性的存在而存在
類屬性 (static修飾):隨著類的存在而存在
成員變數無需顯式初始化,系統會自動對其進行默認初始化
局部變數可分為:
形參(形式參數): 在整個方法內有效
方法局部變數 (方法內定義):從定義這個變數開始到方法結束這一段時間內有效
代碼塊局部變數 (代碼塊內定義):從定義這個變數開始到代碼塊結束這一段時間內有效
局部變數除了形參外,都必須顯示初始化,也就是要指定一個初始值,否則不能訪問。
還有,在內存中的位置也不一樣。成員變數在所在類被實例化後,存在堆內存中;局部變數在所在方法調用時,存在棧內存空間中。
在Java中,為什麼類變數不能是局部變數?
Java中類可以是局部變數。
以下是局部變數的定義:
指在程序中,只在特定過程或函數中可以訪問的變數,是相對與全局變數而言的。全局變數也稱外部變數,是在函數外部定義的,作用域為從變數定義處開始,到本程序文件的末尾。全局變數全部存放在靜態存儲區,在程序開始執行時給全局變數分配存儲區,程序行完畢就釋放。由於Java是面向對象語言,所有變數都是類成員,所以Java只有局部變數,沒有全局變數。同樣地,在C++、C#、Ruby這些面向對象語言中,一般也只使用局部變數。面向對象編程是現在普遍採用的軟體開發方法,因此現在已無需考慮是局部還是全局變數,說到變數,往往都是局部變數。
java什麼是成員變數和局部變數
本文介紹成員變數和局部變數的區別
1、成員變數是獨立於方法外的變數,局部變數是類的方法中的變數
1)、成員變數:包括實例變數和類變數,用static修飾的是類變數,不用static修飾的是實例變數,所有類的成員變數可以通過this來引用。
2)、局部變數:包括形參,方法局部變數,代碼塊局部變數,存在於方法的參數列表和方法定義中以及代碼塊中。
2、成員變數可以被public,protect,private,static等修飾符修飾,而局部變數不能被控制修飾符及 static修飾;兩者都可以定義成final型。
3、成員變數存儲在堆,局部變數存儲在棧。局部變數的作用域僅限於定義它的方法,在該方法的外部無法訪問它。成員變數的作用域在整個類內部都是可見的,所有成員方法都可以使用它。如果訪問許可權允許,還可以在類的外部使用成員變數。
4、局部變數的生存周期與方法的執行期相同。當方法執行到定義局部變數的語句時,局部變數被創建;執行到它所在的作用域的最後一條語句時,局部變數被銷毀。類的成員變數,如果是實例成員變數,它和對象的生存期相同。而靜態成員變數的生存期是整個程序運行期。
5、成員變數在累載入或實例被創建時,系統自動分配內存空間,並在分配空間後自動為成員變數指定初始化值,初始化值為默認值,基本類型的默認值為0,複合類型的默認值為null。(被final修飾且沒有static的必須顯式賦值),局部變數在定義後必須經過顯式初始化後才能使用,系統不會為局部變數執行初始化。
6、局部變數可以和成員變數 同名,且在使用時,局部變數具有更高的優先順序,直接使用同名訪問,訪問的是局部變數,如需要訪問成員變數可以用this.變數名訪問
頂
Java中什麼是局部變數,什麼是類變數,怎麼用this
局部變數是相對於全局而言的。
類變數應該就是類的成員變數吧,也可以說是類的屬性。
成員變數相對於,類的方法里的局部變數而言就是相當於是全局變數的。
this就是當前這個類,你可以this.成員變數在方法中使用這個「全局變數」當然是this.也是可以省略的,如果變數同名,可以加this.來區分。
什麼是java的局部變數、成員變數和全局變數?
1、局部變數:在方法內定義的變數稱為「局部變數」或「臨時變數」,方法結束後局部變數佔用的內存將被釋放。
2、成員變數:在類體的變數部分中定義的變數,也稱為欄位。
3、全局變數:全局變數,又稱「外部變數」,它不是屬於哪個方法,作用域從定義的地址開始到源文件結束。
4、局部變數和成員變數主要是他們作用域的區別:
成員變數個是類內部;局部變數是定義其的方法體內部(或者方法體內部的某一程序塊內——大括弧,主要看定義的位置)。
成員變數可以不顯式初始化,它們可以由系統設定默認值;局部變數沒有默認值,所以必須設定初始賦值。
在內存中的位置也不一樣。成員變數在所在類被實例化後,存在堆內存中;局部變數在所在方法調用時,存在棧內存空間中。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/271320.html