成員變量和局部變量
作用域不同
成員變量:整個類內部都可見;局部變量:僅局限于它的方法
初始值不同
成員變量:Java會給其賦值,為0;局部變量:不會被賦值
同名問題
同一方法不允許有同名局部變量;不同方法中可以有同名局部變量
局部變量具有更高的優(yōu)先級
作用域不同
成員變量:整個類內部都可見;局部變量:僅局限于它的方法
初始值不同
成員變量:Java會給其賦值,為0;局部變量:不會被賦值
同名問題
同一方法不允許有同名局部變量;不同方法中可以有同名局部變量
局部變量具有更高的優(yōu)先級
2019-02-18
舉報
2019-02-18
成員變量與局部變量的區(qū)別
成員變量與局部變量的區(qū)別
1、在類中的位置不同
成員變量:在類中方法外面
局部變量:在方法或者代碼塊中,或者方法的聲明上(即在參數列表中)
2、在內存中的位置不同,可以看看Java程序內存的簡單分析
成員變量:在堆中(方法區(qū)中的靜態(tài)區(qū))
局部變量:在棧中
3、生命周期不同
成員變量:隨著對象的創(chuàng)建而存在,隨著對象的消失而消失
局部變量:隨著方法的調用或者代碼塊的執(zhí)行而存在,隨著方法的調用完畢或者代碼塊的執(zhí)行完畢而消失
4、初始值
成員變量:有默認初始值
局部變量:沒有默認初始值,使用之前需要賦值,否則編譯器會報錯(The local variable xxx may not have been initialized)
輸出結果:局部變量
我們看到輸出的是show方法中定義的name變量,在使用變量時遵循的原則是就近原則,那么如何訪問到成員變量name呢,Java中提供了this(表示調用對象本身)這個關鍵字用于訪問成員變量。
輸出結果:成員變量