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("李四");
}
}