用 static 修飾變量時應該注意的問題


1.使用 static 修飾的變量由該類的全體對象共享

 1 public class TestStatic {
 2     static int a;
 3     
 4     public void setA(int a) {
 5         this.a = a;
 6     }
 7     
 8     public void printA() {
 9         System.out.println(a);
10     }
11     
12     public static void main(String[] args) {
13         TestStatic t1 = new TestStatic();
14         t1.setA(10);
15         t1.printA();
16         
17         TestStatic t2 = new TestStatic();
18         t2.printA();
19     }
20 }

輸出結果 

10
10

t1 中我們把靜態變量 a 的值設為了 10,在 t2 中並沒有對 a 進行任何操作

我們可以清楚的看到被 static 修飾的變量是被該類的全體對象所共享的

 

2.在子類中如果沒有重新定義繼承自父類的靜態變量,那么子類和父類共享同一個靜態變量

(1)沒有在子類重新定義靜態變量 a

public class TestStatic2 extends Father{
    public static void main(String[] args) {
        a++;
        System.out.println(a);
    }
}

class Father{
    static int a = 10;
}
11
(2)在子類中重新定義靜態變量 a
public class TestStatic2 extends Father{
    static int a = 5;
    public static void main(String[] args) {
        a++;
        System.out.println(a);
    }
}

class Father{
    static int a = 10;
}
6

static 修飾的變量,在子類中如果沒有重新定義繼承自父類的靜態變量,那么子類和父類共享同一個靜態變量


免責聲明!

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



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