1. 程式人生 > 其它 >區域性變數和全域性變數(涉及變數重名問題)

區域性變數和全域性變數(涉及變數重名問題)

技術標籤:面試經典java程式人生面試其他java

                                                             面試題:java中成員變數和區域性變數的

重名問題

全域性變數和區域性變數的重名問題:意思是說一段程式碼裡面,一個類的方法裡的變數和一個類的全域性變數用了同一個變數名,那麼這個時候一般區域性變數會覆蓋全域性
變數,這時後一般我們選擇用this.變數名 來代替全部變數:如果區域性變數的名字和全域性變數的名字是一樣的,全域性變數會被隱藏,如果要將全域性變數顯示出來,
則需要在前面加上this修飾詞。當方法中的區域性變數和類的成員變數重名時,根據就近原則,優先使用區域性變數。

JAVA中的全域性變數和區域性變數是允許重名的,但是如果在方法體內使用該重名變數時,區域性變數會覆蓋全域性變數,出了方法,區域性變數被銷燬,只剩下全域性變數
2.不同作用域(作用域的意思是指,構造方法,方法,語句塊中)的兩個區域性變數可以重名,但如果兩區域性變數作用域相同就不行了;
全域性變數(又叫成員變數)可以理解為作用域是整個程式的一種變數。

面試題:成員變數與區域性變數的區別

1.成員變數:在類中方法外面
區域性變數:在方法或者程式碼塊中,或者方法的宣告上(即在引數列表中)
2.在記憶體中的位置不同
成員變數:在堆中(方法區中靜態區),成員變數屬於物件,物件進堆記憶體
區域性變數:在棧中,區域性變數屬於方法,方法進棧記憶體

3.生命週期不同
成員變數:隨著物件的建立而存在,隨著物件的消失而消失
區域性變數:隨著方法的呼叫或程式碼塊的執行而存在,隨著方法的呼叫完畢或者程式碼塊的執行完畢而消失
4.初始值
成員變數:有預設初始值
區域性變數:沒有預設初始值,使用前需賦值