java類變數

提手發表於2020-10-01

java類變數

在java中建立一個類,類中總會有一個main函式

public static void main(String[] args)

它跟類中其他成員函式不一樣的地方是多了static,那
static是什麼呢?
看下面一段程式碼

public class Main {
    private static int dir=1;
    
    public static void main(String[] args) {
        Main m1=new Main();
        Main m2=new Main();
        System.out.println(m1.dir);
        System.out.println(m2.dir);
    }
}

在類中定義了一個用static修飾的屬性變數,在主函式中建立兩個物件,分別輸出dir的值
輸出:

1
1

看起來好像m1和m2中分別存在獨立的成員變數dir,那讓我們修改m1.dir的值再次輸出。

public class Main {

    private static int dir=1;
    
    public static void main(String[] args) {
        Main m1=new Main();
        Main m2=new Main();
        System.out.println(m1.dir);
        System.out.println(m2.dir);
        m1.dir=2;
        System.out.println(m1.dir);
        System.out.println(m2.dir);
    }
}

輸出:

1
1
2
2

可以看到明明只是修改了m1.dir的值,但是m2.dir的值也隨之變化,就好像是通過一個物件修改了static修飾的變數那其他的物件也隨之改變。其實這個dir並不屬於任何物件,它屬於這個類,可以說是類自帶的一個變數,只有一個,可以通過物件名.變數名訪問,也可以通過類名.變數名訪問,無論訪問的方式是什麼,所訪問的變數都是那一個,這種被static所修飾的變數就叫類變數,被static所修飾的函式叫類函式。

System.out.println(Main.dir); //通過類名訪問

類變數和類函式不屬於任何物件,它就相當於這個類自帶的,需要注意的是若類函式只能呼叫類函式和訪問類變數,若想訪問非類函式(不是static修飾的函式)和非類變數只能用物件的方式取訪問。

相關文章