成員變量與局部變量的區別


成員變量與局部變量的區別

1、在類中的位置不同

成員變量:在類中方法外面

局部變量:在方法或者代碼塊中,或者方法的聲明上(即在參數列表中)

2、在內存中的位置不同,可以看看Java程序內存的簡單分析

成員變量:在堆中(方法區中的靜態區)

局部變量:在棧中

3、生命周期不同

成員變量:隨着對象的創建而存在,隨着對象的消失而消失

局部變量:隨着方法的調用或者代碼塊的執行而存在,隨着方法的調用完畢或者代碼塊的執行完畢而消失

4、初始值

成員變量:有默認初始值

局部變量:沒有默認初始值,使用之前需要賦值,否則編譯器會報錯(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 }

輸出結果:局部變量
我們看到輸出的是show方法中定義的name變量,在使用變量時遵循的原則是就近原則,那么如何訪問到成員變量name呢,Java中提供了this(表示調用對象本身)這個關鍵字用於訪問成員變量。

 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 }

輸出結果:成員變量


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM