區域性變數和全域性變數(涉及變數重名問題)
阿新 • • 發佈:2021-01-12
面試題:java中成員變數和區域性變數的
重名問題
全域性變數和區域性變數的重名問題:意思是說一段程式碼裡面,一個類的方法裡的變數和一個類的全域性變數用了同一個變數名,那麼這個時候一般區域性變數會覆蓋全域性
變數,這時後一般我們選擇用this.變數名 來代替全部變數:如果區域性變數的名字和全域性變數的名字是一樣的,全域性變數會被隱藏,如果要將全域性變數顯示出來,
則需要在前面加上this修飾詞。當方法中的區域性變數和類的成員變數重名時,根據就近原則,優先使用區域性變數。
2.不同作用域(作用域的意思是指,構造方法,方法,語句塊中)的兩個區域性變數可以重名,但如果兩區域性變數作用域相同就不行了;
全域性變數(又叫成員變數)可以理解為作用域是整個程式的一種變數。
面試題:成員變數與區域性變數的區別
1.成員變數:在類中方法外面
區域性變數:在方法或者程式碼塊中,或者方法的宣告上(即在引數列表中)
2.在記憶體中的位置不同
成員變數:在堆中(方法區中靜態區),成員變數屬於物件,物件進堆記憶體
區域性變數:在棧中,區域性變數屬於方法,方法進棧記憶體
成員變數:隨著物件的建立而存在,隨著物件的消失而消失
區域性變數:隨著方法的呼叫或程式碼塊的執行而存在,隨著方法的呼叫完畢或者程式碼塊的執行完畢而消失
4.初始值
成員變數:有預設初始值
區域性變數:沒有預設初始值,使用前需賦值