Java語言基礎常用API(6)之static

1.概述

關於 static 關鍵字的使用,它可以用來修飾的成員變量和成員方法,被修飾的成員是屬於類的,而不是單單是屬於某個對象的。也就是說,既然屬於類,就可以不靠創建對象來調用了。

2.定義和使用格式
2.1 類變量

當 static 修飾成員變量時,該變量稱爲類變量。該類的每個對象都共享同一個類變量的值。任何對象都可以更改該類變量的值,但也可以在不創建該類的對象的情況下對類變量進行操作。
類變量:使用 static關鍵字修飾的成員變量。

定義格式:static 數據類型 變量名;
舉例子: static int numberID;

比如說,基礎班新班開班,學員報到。現在想爲每一位新來報到的同學編學號(id),從第一名同學開始,id爲1,以此類推。學號必須是唯一的,連續的,並且與班級的人數相符,這樣以便知道,要分配給下一名新同學的學號是多少。這樣我們就需要一個變量,與單獨的每一個學生對象無關,而是與整個班級同學數量有關。所以,我們可以這樣定義一個靜態變量idCounter。
代碼如下:

public class Student {

    private String name; //姓名
    private int age; //年齡
    static String room;//所在教室
    private int id;//學號
    private static int idCounter = 0;
    //學號計數器:每當new了一個新對象的時候,計數器++;

    //無參構造
    public Student(){
        this.id = ++ idCounter;

    }

    //全參構造
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
        this.id = ++ idCounter;

    }


    //getter setter
    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

教室也是所有學生共享的。

public class demo01 {

    public static void main(String[] args) {

        Student one = new Student("樊噲",33);
        one.room = "NB-218";
        System.out.println("姓名:" + one.getName()
 + ";年齡:" + one.getAge() + ";學號:" + one.getId() + ";教室:" + one.room);

        Student two = new Student("盧綰",36);
        System.out.println("姓名:" + two.getName()
 + ";年齡:" + two.getAge() + ";學號:" + two.getId() +";教室:" + two.room);

        Student three = new Student("蕭何",36);
        System.out.println("姓名:" +three.getName()
+ ";年齡:" + three.getAge() + ";學號:" + three.getId() +";教室:" + three.room);
    }

}
2.2 靜態方法

類方法:使用 static關鍵字修飾的成員方法,習慣稱爲靜態方法。

定義格式:修飾符 static 返回值類型 方法名 (){
// 執行語句
}
舉例:在Student類中定義靜態方法
public static void showId() {
System.out.println(“學號:” + id);
}

2.3 靜態代碼塊

靜態代碼塊:定義在成員位置,使用static修飾的代碼塊{ }。
位置:類中方法外。
執行:隨着類的加載而執行且執行一次,優先於main方法和構造方法的執行。

public class ClassName{
static {
// 執行語句
}
}

作用:給類變量進行初始化賦值。用法演示,代碼如下:

public class Game {
public static int number;
public static ArrayList<String> list;
static {
// 給類變量賦值
number = 2;
list = new ArrayList<String>();
// 添加元素到集合中
list.add("張三");
list.add("李四");
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章