成員變量和局部變量

作用域不同
成員變量:整個(gè)類內(nèi)部都可見;局部變量:僅局限于它的方法
初始值不同
成員變量:Java會(huì)給其賦值,為0;局部變量:不會(huì)被賦值
同名問題
同一方法不允許有同名局部變量;不同方法中可以有同名局部變量
局部變量具有更高的優(yōu)先級(jí)

作用域不同
成員變量:整個(gè)類內(nèi)部都可見;局部變量:僅局限于它的方法
初始值不同
成員變量:Java會(huì)給其賦值,為0;局部變量:不會(huì)被賦值
同名問題
同一方法不允許有同名局部變量;不同方法中可以有同名局部變量
局部變量具有更高的優(yōu)先級(jí)
2019-02-18
舉報(bào)
2019-02-18
成員變量與局部變量的區(qū)別
成員變量與局部變量的區(qū)別
1、在類中的位置不同
成員變量:在類中方法外面
局部變量:在方法或者代碼塊中,或者方法的聲明上(即在參數(shù)列表中)
2、在內(nèi)存中的位置不同,可以看看Java程序內(nèi)存的簡(jiǎn)單分析
成員變量:在堆中(方法區(qū)中的靜態(tài)區(qū))
局部變量:在棧中
3、生命周期不同
成員變量:隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失
局部變量:隨著方法的調(diào)用或者代碼塊的執(zhí)行而存在,隨著方法的調(diào)用完畢或者代碼塊的執(zhí)行完畢而消失
4、初始值
成員變量:有默認(rèn)初始值
局部變量:沒有默認(rèn)初始值,使用之前需要賦值,否則編譯器會(huì)報(bào)錯(cuò)(The local variable xxx may not have been initialized)
?1?package?demo;?2??3?public?class?VariableDemo?{?4?????String?name?=?"成員變量";?5??6?????public?static?void?main(String[]?args)?{?7?????????new?VariableDemo().show();?8?????}?9?10?????public?void?show()?{11?????????String?name?=?"局部變量";12?????????System.out.println(name);13?????}14?}輸出結(jié)果:局部變量
我們看到輸出的是show方法中定義的name變量,在使用變量時(shí)遵循的原則是就近原則,那么如何訪問到成員變量name呢,Java中提供了this(表示調(diào)用對(duì)象本身)這個(gè)關(guān)鍵字用于訪問成員變量。
?1?package?demo;?2??3?public?class?VariableDemo?{?4?????String?name?=?"成員變量";?5??6?????public?static?void?main(String[]?args)?{?7?????????new?VariableDemo().show();?8?????}?9?10?????public?void?show()?{11?????????String?name?=?"局部變量";12?????????System.out.println(this.name);13?????}14?}輸出結(jié)果:成員變量