JAVA static關鍵字
static關鍵字的四種用法
1.static變數
在類中定義變數的時候,加上static後可在同包不同類中通過類名.變數名直接呼叫
定義:修飾符 static 資料型別 變數名;
呼叫:類名.變數名
static變數又稱靜態變數。靜態變數在記憶體中只有一個,所有的物件都可以呼叫;而非靜態變數在建立物件時就被建立,各個物件的非靜態變數互不影響。
static成員變數的初始化順序按照定義的順序進行初始化。
注意:static不允許用來修飾區域性變數。
2.static方法
static方法又稱靜態方法。靜態方法不通過物件就可以進行訪問。
public class Main {
public static void main(String [] args) {
//直接呼叫,未建立物件
Main.play();
play();
}
public static void play() {
System.out.println("<<<<");
}
}
靜態方法不依賴與任何物件,沒有物件就沒有this,所以沒有this.靜態方法。
在靜態方法中不能訪問類的非靜態成員變數和非靜態成員方法,因為非靜態成員方法和變數是依賴於具體的物件才能呼叫。
注意:在靜態方法中不能訪問非靜態成員方法和非靜態成員變數,但在非靜態方法中可以訪問靜態成員方法和變數。
想要在不建立物件的情況下呼叫某個方法,可以將這個方法設定為static方法。最常見的static方法是main方法(主函式)。
3.static程式碼塊(靜態塊)
static塊可以置於類中的任何地方,類中可以有多個靜態塊。在類被初次載入的時候,會按照static塊的順序來執行每個static塊,並且只會執行一次。
static塊可以用來優化程式效能:只會在類載入的時候執行一次。
普通方法:每次呼叫都會建立新的物件
public void chat() { String name1 = "名字1"; String name2 = "名字2"; System.out.println(name1+"和"+name2+"在聊天"); }
靜態塊:只需要在初始化的時候建立一次物件
private static String name1,name2;
static {
name1 = "名字1";
name2 = "名字2";
System.out.println(name1+"和"+name2+"在聊天");
}
public void chat() {
System.out.println(name1+"和"+name2+"在聊天");
}
4.靜態匯入
匯入類:
import packageName className; //匯入指定的類
import packageName.*; //匯入包中所有的類
靜態匯入:
import static packageName.className.methonName; //匯入某個特定的靜態方法
import static packageName.className; //匯入類中的所有靜態成員
匯入後,可以在當前類中直接用方法名呼叫靜態方法,不必再用className.methonName來訪問。