在Java中,我們可以將變數和方法定義為靜態的。靜態變數或方法屬於類別本身,而不屬於該類別的各個物件。因此,我們可以使用類別名稱來存取靜態變數或方法,而無需建立該類別的物件。
在這個程式中,我們將探討如何透過靜態方法檢查靜態變數的可訪問性。我們將定義一個帶有靜態變數和存取該變數的靜態方法的類別。然後我們將呼叫靜態方法來檢查它是否可以存取靜態變數。
static 關鍵字在 Java 中非常有用,可用於建立可從多個類別存取的實用方法或變量,而無需建立該類別的物件。它也用於在類別的所有實例中保持相同的常數值。但靜態變數和方法的使用可能會帶來線程安全、測試困難等潛在問題,因此應謹慎使用。
以下是 Java 中 static 的一些關鍵特性 -
靜態變數
靜態方法
靜態區塊
靜態巢狀類別
#靜態變數 - 靜態變數是類別層級的變量,在類別的所有實例之間共用。它是使用關鍵字 static 定義的,並且僅在類別載入時初始化一次。使用類別名稱後跟點運算子來存取靜態變數。
如果使用公共存取修飾符聲明靜態方法,則任何其他類別都可以存取該方法,包括包含靜態變數的類別。在這種情況下,如果靜態變數也使用公共存取修飾符聲明,則可以透過靜態方法存取該靜態變數。
但是,如果使用 private 存取修飾符宣告靜態方法,則只能在同一個類別內存取它。在這種情況下,靜態變數無法透過靜態方法存取,即使使用 public 存取修飾符宣告也是如此。
使用「import」語句導入必要的 I/O 函式庫。
定義一個名為「Tutorialspoint」的 Java 類別。
宣告一個 int 類型的靜態變數「i」並為其賦值 100。
使用 public、static、void 簽章定義 main() 方法,並採用名為「args」的字串參數陣列。
在main()方法中,使用System.out.println()方法在控制台上顯示靜態變數「i」的值。
將程式碼保存在名為「Tutorialspoint.java」的 Java 檔案中。
使用 Java 編譯器(例如「javac」)編譯 Java 程式碼。
使用「java」命令執行 Java 程式碼,執行「main」方法並在控制台上顯示輸出「Static Variable = 100」。
import java.io.*; public class Tutorialspoint { static int i = 100; public static void main(String[] args){ System.out.println("Static Variable = " + i); } }
在此範例中,名為「Tutorialspoint」的類別使用整數資料類型的名為「i」的靜態變數定義,並使用值 100 進行初始化。
該類別的 main 方法使用 public、static、void 簽章進行定義,並採用名為「args」的字串參數陣列。
在 main 方法中,使用 System.out.println() 方法列印靜態變數「i」的值。輸出語句包含一個字串「Static Variable =」與靜態變數「i」的值連接。
執行程式時,它將列印「Static Variable = 100」作為輸出,因為靜態變數「i」的值設為 100。
靜態變數是屬於類別而非類別實例的變數。這意味著該類別的所有實例僅共用靜態變數的副本。換句話說,靜態變數是類別層級的變量,無需創建類別的物件即可存取。
Static Variable = 100
如果使用 public 存取修飾符聲明靜態變量,則任何其他類別都可以存取該變量,包括包含靜態方法的類別。在這種情況下,如果靜態方法也使用 public 存取修飾符聲明,則靜態方法可以存取靜態變數。
但是,如果使用 private 存取修飾符聲明靜態變量,則只能在同一個類別內存取它。在這種情況下,靜態方法無法存取靜態變量,即使使用 public 存取修飾符聲明也是如此。
在這種情況下,我們在類別中宣告了一個靜態變數、一個靜態陣列和一個靜態方法。靜態方法同時存取靜態變數和靜態數組,並且在呼叫該方法時無需建立類別的實例。
由於靜態變數和靜態數組都屬於類,而不是類別的任何特定實例,因此即使在沒有創建類別實例的情況下呼叫該方法,也可以透過靜態方法存取它們。
建立一個新的 Java 類別檔案並將其命名為 MyClass.java。
在 MyClass.java 檔案中,宣告一個名為 count 的私有靜態整數變量,並將其初始化為 0。
声明一个名为 myArray 的私有静态整数数组,并使用一些值对其进行初始化,例如 myArray = new int[]{1, 2, 3, 4, 5};
声明一个名为 myStaticMethod() 的公共静态方法,它执行以下操作 -
将 count 的值增加 1。
使用 System.out.println() 将 count 的值打印到控制台。
循环遍历 myArray 数组并使用 System.out.println() 将每个元素打印到控制台。
保存 MyClass.java 文件。
public class MyClass { private static int count = 0; private static int[] myArray = new int[]{1, 2, 3, 4, 5}; public static void myStaticMethod() { count++; System.out.println("Count: " + count); for (int i = 0; i < myArray.length; i++) { System.out.println(myArray[i]); } } }
创建一个新的 Java 类文件并将其命名为 Main.java。
在 Main.java 文件中,添加 main() 方法。
在 main() 方法中,使用类名称后跟方法名称和括号来调用 MyClass 类的 myStaticMethod() 方法,例如 MyClass.myStaticMethod();。
保存 Main.java 文件。
public class Main { public static void main(String[] args) { MyClass.myStaticMethod(); } }
通过在命令提示符或终端中运行命令 javac MyClass.java Main.java 来编译 MyClass.java 和 Main.java 文件。
通过在命令提示符或终端中运行命令 java Main 来运行程序。
在此示例中,我们有一个 MyClass 类,其中包含静态变量 count 和静态数组 myArray,以及静态方法 myStaticMethod()。 myStaticMethod() 方法将 count 的值加 1,将 count 的值打印到控制台,然后循环遍历 myArray 数组并将每个元素打印到控制台。
在 Main 类中,我们通过使用类名后跟方法名和括号来调用 MyClass 类本身(而不是该类的任何实例)上的 myStaticMethod() 方法。此方法调用将执行 myStaticMethod() 方法并将以下内容输出到控制台 -
Count: 1 1 2 3 4 5
在 Java 中,静态变量和静态方法与类本身相关联,而不是与类的任何特定实例相关联。这意味着静态方法可以直接访问静态变量,只要该变量与该方法在同一个类中定义即可。
以上是Java程式檢查靜態方法對靜態變數的可訪問性的詳細內容。更多資訊請關注PHP中文網其他相關文章!