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