Java 靜態方法,變數和程式碼塊
Java 中的靜態可以是:
- 靜態變數
- 靜態方法
- 靜態程式碼塊。
我們先來看一下靜態變數和靜態方法。
Java 中的靜態變數是什麼?
Java 中的靜態變數是變數,屬於類,並且在執行開始時僅初始化一次。
- 它是屬於類的變數而不是物件(例項)
- 靜態變數僅在執行開始時初始化一次。在初始化任何例項變數之前,將首先初始化這些變數
- 要由該類的所有例項共享的單個副本
- 靜態變數可以通過類名直接訪問,不需要任何物件
語法 :
<class-name>.<variable-name>
Java 中的靜態方法是什麼?
Java 中的靜態方法是屬於類而不是物件的方法。靜態方法只能訪問靜態資料。
- 這是一個屬於類的方法而不是物件(例項)
- 靜態方法只能訪問靜態資料。它無法訪問非靜態資料(例項變數)
- 靜態方法只能呼叫其他靜態方法,不能從中呼叫非靜態方法。
- 靜態方法可以通過類名直接訪問,不需要任何物件
- 無論如何,靜態方法不能引用
this
或super
關鍵字
語法 :
<class-name>.<method-name>
注意: main 方法是靜態的,因為在任何例項化發生之前,應用程式必須可以訪問它。
讓我們通過做一些練習來了解靜態關鍵詞的細微差別!
示例:如何呼叫靜態變數和方法
步驟 1: 將以下程式碼複製到編輯器中
public class Demo{
public static void main(String args[]){
Student s1 = new Student();
s1.showData();
Student s2 = new Student();
s2.showData();
//Student.b++;
//s1.showData();
}
}
class Student {
int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.
Student(){
//Constructor incrementing static variable b
b++;
}
public void showData(){
System.out.println("Value of a = "+a);
System.out.println("Value of b = "+b);
}
//public static void increment(){
//a++;
//}
}
步驟 2: 儲存並編譯程式碼,程式碼名為 java Demo
,執行程式碼。
步驟 3: 預期輸出如下所示,
C:\Tastones>java Demo
Value of a = 0
Value of b = 1
Value of c = 0
Value of d = 2
下圖顯示瞭如何建立引用變數和物件,以及不同例項訪問靜態變數。
![Java 靜態方法和變數](/img/static variable.jpg)
步驟 4: 可以使用語法 ClassName.Variable_Name
從類外部訪問靜態變數。取消註釋#7&8。儲存,編譯和執行。觀察輸出。
Value of a = 0
Value of b = 1
Value of a = 0
Value of b = 2
Value of a = 0
Value of b = 3
步驟 5: 取消註釋第 25,26 和 27 行。儲存,編譯和執行。
error: non-static variable a cannot be referenced from a static context a++;
步驟 6: 錯誤發生的原因是因為無法從 Java 靜態類方法 increment
訪問例項變數 a
。
Java 靜態程式碼塊
靜態塊是 Java 類中的程式碼塊,它將在類首次載入到 JVM 時執行,
class Test{
static {
//Code goes here
}
}
一個靜態塊有助於初始化靜態資料成員,就像建構函式幫助初始化例項成員一樣
以下程式是 java 靜態塊的示例。
示例:如何訪問靜態塊
public class Demo {
static int a;
static int b;
static {
a = 10;
b = 20;
}
public static void main(String args[]) {
System.out.println("Value of a = " + a);
System.out.println("Value of b = " + b);
}
}
你將獲得該程式的以下輸出。
Value of a = 10
Value of b = 20