1. 程式人生 > 實用技巧 >Static關鍵字的使用

Static關鍵字的使用

Static關鍵字的使用

static關鍵字的作用:

用來修飾成員變數和方法,被修飾的成員是屬於類的,而不單單是屬於某個物件的,也就是說,可以不靠物件來呼叫。

首先我們來介紹類變數

當static修飾成員變數時,該變數稱為類變數,該類的每個物件都共享同一個類變數的值,任何

物件都可以更改該變數的值,但也可以在不建立該類物件的情況下,通過類名對類變數進行操作

命名格式

static 資料型別 變數名;

static int age;

下面我們來舉個例子,讓大家體會體會類變數的作用

就比如梁山有108位好漢我們給這108位好漢按照次序每人一個編號,這就需要使用到類變數

定義一個Person類

public
class Person { private int age; private String name; private int id; private static int count=1; public int getId() { return id; } @Override public String toString() { return "Person{" + "age=" + age + ", name='" + name + '\'' + ", id=" + id + '}'; }
public void setId(int id) { this.id=count; count++; } public Person(int age, String name) { this.age = age; this.name = name; this.id=count; count++; } public Person() { } public int getAge() { return age; }
public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

主函式

public class Test {
    public static void main(String[] args) {
        Person one = new Person(18, "及時雨宋江");
        System.out.println(one);
        Person two = new Person(18, "盧俊義");
        System.out.println(two);

    }
}

結果

我們看到id的數值在不斷的+1,這是因為他們的id都等於了一個公共的類變數

接下來我們來介紹靜態方法

靜態方法即類中使用static修飾的方法,該方法使用類名可以直接呼叫,不需要建立類的物件

定義格式

修飾符 static 返回置型別 方法名 (引數列表){

//執行語句

}

示例

public static void eat(){
System.out.println("吃飯了");
}

使用靜態方法的注意事項

靜態方法只可以直接訪問類變數與靜態方法

靜態方法不能訪問普通成員變數或成員方法

靜態方法中不可以使用this關鍵字(因為this代表的是使用該方法的物件,而靜態方法是屬於類的,this無從指向,所以不可以使用)

下面我們寫一段程式碼來使用一下靜態方法

public class Person2 {
    public  static void test(){
        System.out.println("這是靜態方法" );
    }
}
public class Test {
    public static void main(String[] args) {
        System.out.println("這是使用類名呼叫的:");
         Person2.test();
        Person2 person2 = new Person2();
        System.out.println("這是使用物件呼叫的:");
        person2.test();

    }
}

執行結果

下面我們從記憶體的角度來講講靜態的原理

先上程式碼

public class Teacher {
    private  int age;
    private  String name;
    private  static  String subject="math";
    public Teacher(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public Teacher() {
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public static String getSubject() {
        return subject;
    }

    public static void setSubject(String subject) {
        Teacher.subject = subject;
    }
}
public class Test {
    public static void main(String[] args) {
        Teacher wang = new Teacher(18, "wang");
        Teacher li = new Teacher(19, "li");
    }
}

小結:普通成員變數操作各自空間,靜態變數操作共享空間

靜態程式碼塊,敲重點!!!這個在我們後面學習中會經常使用到

什麼是靜態程式碼塊呢?

定義在成員位置,使用static修飾的程式碼塊{}

位置:類中方法外

執行隨著類的載入而執行且只執行一次,優先於main方法和構造方法的執行

格式

1 public class Person {
2   static {
3       
4   }
5 }

這裡就不深究了後面的文章我找幾乎再說說

以上就是static關鍵字的一些基礎知識,如有錯誤請各位批評指正