Java 成員變量、局部變量和靜態變量的區別


引言

Java 的變量有三種,分別是局部變量、成員變量和靜態變量,作為 Java 初學者經常容易搞暈,這篇博客文章就談一談這三種變量的區別,希望對你有所幫助。

成員變量

Java 中基本單位是類,定義一個類包括類的屬性和行為,即類的成員變量和成員方法,如下:

public class Car {
         private String color; // 成員變量
         private int numLuntai; //成員變量
 
         public Car(String color, int numLuntai){
                   super();
                   this.color = color;
                   this.numLuntai = numLuntai;
         }
        public void run() { //成員方法
                   System.out.println(this.numLuntai+ "個輪子的" +this.color + "轎車在馬路上行駛着");
         }
}

局部變量

Java 中的局部變量是指在類的方法中定義的變量,如下:

public class Car {
         private String color;
         private int numLuntai; 
 
         public Car(String color, int numLuntai){
                   super();
                   this.color = color;
                   this.numLuntai = numLuntai;
         }
        public void run() { 
            String name = "寶馬"; //局部變量
            System.out.println(this.numLuntai+ "個輪子的" +this.color + "轎車在馬路上行駛着");
         }
}

靜態變量

由static修飾的變量稱為靜態變量,其實質上就是一個全局變量。如果某個內容是被所有對象所共享,那么該內容就應該用靜態修飾;沒有被靜態修飾的內容,其實是屬於對象的特殊描述。

class Person{
       //成員變量,實例變量
       String name;
       //靜態變量,類變量
       //所有對象共享的屬性用static修飾
       static String country = "CN";
       public void show(){
            System. out.println(country + ":" + name);
             //等效語句:System.out.println(Person.country+ ":" + this.name);
      }
}
class StaticDemo{
       public static void main(String[]args){
            Personp = new Person();
            System. out.println(p.country);
             //可以用類名直接調用
            System. out.println(Person.country);
      }
} 

結果:

CN

CN

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

成員變量:
  • ①成員變量定義在類中,在整個類中都可以被訪問。

  • ②成員變量隨着對象的建立而建立,隨着對象的消失而消失,存在於對象所在的堆內存中。

  • ③成員變量有默認初始化值。

局部變量:
  • ①局部變量只定義在局部范圍內,如:函數內,語句內等,只在所屬的區域有效。

  • ②局部變量存在於棧內存中,作用的范圍結束,變量空間會自動釋放。

  • ③局部變量沒有默認初始化值

在使用變量時需要遵循的原則為:就近原則
首先在局部范圍找,有就使用;接着在成員位置找

成員變量和靜態變量的區別

1、兩個變量的生命周期不同
  • 成員變量隨着對象的創建而存在,隨着對象被回收而釋放。

  • 靜態變量隨着類的加載而存在,隨着類的消失而消失。

2、調用方式不同
  • 成員變量只能被對象調用。

  • 靜態變量可以被對象調用,還可以被類名調用。

3、別名不同
  • 成員變量也稱為實例變量。

  • 靜態變量也稱為類變量。

4、數據存儲位置不同
  • 成員變量存儲在堆內存的對象中,所以也叫對象的特有數據。

  • 靜態變量數據存儲在方法區(共享數據區)的靜態區,所以也叫對象的共享數據。

總結

成員變量、局部變量、靜態變量的區別
image-20210728111718910

盡管三者的本質都是變量,可是使用時卻有相當大的區別,稍不留神就可能陷入陷阱。且先記住:在一個類中,如果一個變量能夠用來描述一個類的屬性,那就定義為成員變量,否則,它就應該定義為局部變量。而如果一個變量在全局中都能使用(某個內容是被所有對象所共享),那么我們就可以把這個變量用static來修飾,即為靜態變量。


免責聲明!

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



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