首頁 > Java > java教程 > 主體

Java程式檢查靜態方法對靜態變數的可訪問性

WBOY
發布: 2023-08-26 17:25:06
轉載
927 人瀏覽過

Java程式檢查靜態方法對靜態變數的可訪問性

簡介

在Java中,我們可以將變數和方法定義為靜態的。靜態變數或方法屬於類別本身,而不屬於該類別的各個物件。因此,我們可以使用類別名稱來存取靜態變數或方法,而無需建立該類別的物件。

在這個程式中,我們將探討如何透過靜態方法檢查靜態變數的可訪問性。我們將定義一個帶有靜態變數和存取該變數的靜態方法的類別。然後我們將呼叫靜態方法來檢查它是否可以存取靜態變數。

定義

靜態

static 關鍵字在 Java 中非常有用,可用於建立可從多個類別存取的實用方法或變量,而無需建立該類別的物件。它也用於在類別的所有實例中保持相同的常數值。但靜態變數和方法的使用可能會帶來線程安全、測試困難等潛在問題,因此應謹慎使用。

以下是 Java 中 static 的一些關鍵特性 -

  • 靜態變數

  • 靜態方法

  • 靜態區塊

  • 靜態巢狀類別

#靜態變數 - 靜態變數是類別層級的變量,在類別的所有實例之間共用。它是使用關鍵字 static 定義的,並且僅在類別載入時初始化一次。使用類別名稱後跟點運算子來存取靜態變數。

情況 1:透過靜態變數存取靜態方法

如果使用公共存取修飾符聲明靜態方法,則任何其他類別都可以存取該方法,包括包含靜態變數的類別。在這種情況下,如果靜態變數也使用公共存取修飾符聲明,則可以透過靜態方法存取該靜態變數。

但是,如果使用 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
登入後複製

情況 2:透過靜態方法存取靜態變數

如果使用 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中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!