1. 程式人生 > 其它 >java static靜態修飾符

java static靜態修飾符

java static

靜態屬性:

package com.yuanyu.Oop;

public class Student{
    private static int age; //靜態變數
    private double score; //非靜態變數

    public static void main(String[] args) {
        Student s1 = new Student();

        System.out.println(age=10);
        System.out.println(s1.age=11);
        System.out.println(Student.age=12);

        //System.out.println(Student.score=89); //編譯報錯
        System.out.println(s1.score=90);
        //System.out.println(score=91); //編譯報錯
    }

}

若是static靜態變數推薦使用類名呼叫變數,可以很清楚看出是個靜態變數

靜態變數對於這個類而言在記憶體中只有一個,可以被類中所有的例項共享,常用於多執行緒

靜態方法:

package com.yuanyu.Oop;

public class Student{

    public void run(){ //非靜態方法
        go(); //非靜態方法可以直接訪問類中的靜態方法
        System.out.println("run");
    }

    public static void go(){ //靜態方法
        System.out.println("go");
    }

    public static void main(String[] args) {
        //run(); //編譯報錯 靜態方法不能直接呼叫非靜態方法
        new Student().run();

        Student.go();
        go();

    }

}

非靜態方法可以直接訪問類中的靜態方法

程式碼塊:

package com.yuanyu.Oop;

public class Student{
    {
        System.out.println("匿名程式碼塊");
    }

    static {
        System.out.println("靜態程式碼塊");
    }

    public Student() {
        System.out.println("構造方法");
    }

    public static void main(String[] args) {
        Student student1 = new Student();
        System.out.println("================================");
        Student student2 = new Student();

    }
}

執行結果:

靜態程式碼塊最先執行且執行一次,其次是匿名程式碼塊、構造方法

因此靜態程式碼塊和匿名程式碼塊都可以用來賦初始值

靜態匯入包:

package com.yuanyu.Oop;

import static java.lang.Math.random;

public class Student{

    public static void main(String[] args) {
        System.out.println(Math.random()); //0.35021309558598646
        System.out.println(random()); //0.07537262741719064
    }
}

匯入包中方法時加入static修飾,否則會報錯