Java 靜態方法,變數和程式碼塊

Java 中的靜態可以是:

  1. 靜態變數
  2. 靜態方法
  3. 靜態程式碼塊。

我們先來看一下靜態變數和靜態方法。

Java 中的靜態變數是什麼?

Java 中的靜態變數是變數,屬於類,並且在執行開始時僅初始化一次。

  • 它是屬於類的變數而不是物件(例項)
  • 靜態變數僅在執行開始時初始化一次。在初始化任何例項變數之前,將首先初始化這些變數
  • 要由該類的所有例項共享的單個副本
  • 靜態變數可以通過類名直接訪問,不需要任何物件

語法 :

<class-name>.<variable-name>

Java 中的靜態方法是什麼?

Java 中的靜態方法是屬於類而不是物件的方法。靜態方法只能訪問靜態資料。

  • 這是一個屬於類的方法而不是物件(例項)
  • 靜態方法只能訪問靜態資料。它無法訪問非靜態資料(例項變數)
  • 靜態方法只能呼叫其他靜態方法,不能從中呼叫非靜態方法。
  • 靜態方法可以通過類名直接訪問,不需要任何物件
  • 無論如何,靜態方法不能引用 thissuper 關鍵字

語法 :

<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