<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java `static`關鍵字 原文:http://zetcode.com/java/statickeyword/ 在本教程中,我們將討論 Java 中的`static`關鍵字。 我們介紹了靜態變量,方法,嵌套類,塊和導入。 ## Java `static`關鍵字定義 `static`關鍵字是不可訪問的修飾符。 具有`static`修飾符的類型不屬于類的實例; 它屬于此類。 除此之外,`static`可用于創建類初始化器,常量,并且無需類限定即可導入靜態變量。 ## `static`關鍵字的用法 `static`關鍵字可以應用于: * 變量 * 方法 * 塊 * 嵌套類 * 導入 ## Java 靜態變量 靜態變量也稱為類變量。 一個類的所有實例共享一個靜態變量的相同副本。 在執行開始時,它們僅初始化一次。 可以通過類名直接訪問類變量,而無需創建實例。 `static`的一種常見用法是創建一個附加到類的常量值。 ### 靜態變量示例 `JavaStaticVariable.java` ```java package com.zetcode; import java.util.ArrayList; import java.util.List; class Being { public static int count; } class Cat extends Being { public Cat() { count++; } } class Dog extends Being { public Dog() { count++; } } class Donkey extends Being { public Donkey() { count++; } } public class JavaStaticVariable { public static void main(String[] args) { List<Being> beings = new ArrayList<>(); beings.add(new Cat()); beings.add(new Cat()); beings.add(new Cat()); beings.add(new Dog()); beings.add(new Donkey()); int nOfBeings = Being.count; System.out.format("There are %d beings %n", nOfBeings); } } ``` 在代碼示例中,我們跟蹤使用靜態變量創建的生物。 ```java class Being { public static int count; } ``` 定義了一個靜態變量。 該變量屬于`Being`類,并由`Being`的所有實例(包括后代)共享。 ```java class Cat extends Being { public Cat() { count++; } } ``` `Cat`類繼承自`Being`。 它將增加`count`變量。 ```java class Dog extends Being { public Dog() { count++; } } ``` `Dog`類增加相同的類變量。 因此,`Dog`和`Cat`指的是同一類變量。 ```java int nOfBeings = Being.count; ``` 我們得到所有被創造的生物的數量。 我們通過類名稱,后跟點運算符和變量名稱來引用類變量。 ### Java 靜態變量屬性 * 靜態變量具有默認值。 * 靜態變量可以通過靜態和非靜態方法直接訪問。 * 靜態變量稱為類變量或靜態字段。 * 靜態變量與類關聯,而不與任何對象關聯。 ## Java 靜態方法 在沒有對象實例的情況下調用靜態方法。 要調用靜態方法,我們使用類的名稱,點運算符和方法的名稱。 靜態方法只能使用靜態變量。 靜態方法通常用于表示不會隨對象狀態變化的數據或計算。 例如,`java.lang.Math`包含用于各種計算的靜態方法。 我們使用`static`關鍵字聲明一個靜態方法。 如果不存在`static`修飾符,則該方法稱為實例方法。 ### 靜態方法限制 靜態方法只能調用其他靜態方法。 它們只能訪問靜態數據,而不能引用`this`和`super`。 ### 靜態方法示例 `JavaStaticMethod.java` ```java package com.zetcode; class Basic { static int id = 2321; public static void showInfo() { System.out.println("This is Basic class"); System.out.format("The Id is: %d%n", id); } } public class JavaStaticMethod { public static void main(String[] args) { Basic.showInfo(); } } ``` 在我們的代碼示例中,我們定義了靜態`ShowInfo()`方法。 ```java static int id = 2321; ``` 靜態方法只能使用靜態變量。 靜態變量不適用于實例方法。 ```java public static void showInfo() { System.out.println("This is Basic class"); System.out.format("The Id is: %d%n", id); } ``` 這是我們的靜態`ShowInfo()`方法。 它與靜態`id`成員一起使用。 ```java Basic.showInfo(); ``` 要調用靜態方法,我們不需要對象實例。 我們通過使用類的名稱和點運算符來調用該方法。 ## Java 靜態`main()`方法 在 Java 控制臺和 GUI 應用中,入口點具有以下特征: ```java public static void main(String[] args) ``` 通過聲明`main()`方法`static`,運行時引擎可以調用它,而無需創建主類的實例。 由于`main()`的主要原因是要引導應用,因此不需要主類的實例。 另外,如果`main()`方法不是`static`,則將需要其他協定,例如默認構造器或主類的要求不能抽象。 因此,使用`static` `main()`方法是一種不太復雜的解決方案。 ## Java 靜態塊 具有`static`修飾符的代碼塊稱為類初始化器。 沒有`static`修飾符的代碼塊是實例初始化器。 在加載類時,將按照定義的順序(從上到下)執行類初始化器。 靜態塊在任何程序的生命周期中執行一次,沒有其他方法可以調用它。 ### 靜態塊示例 `JavaStaticBlock.java` ```java package com.zetcode; public class JavaStaticBlock { private static int i; static { System.out.println("Class initializer called"); i = 6; } public static void main(String[] args) { System.out.println(i); } } ``` 這是靜態初始化器的示例。 ```java static { System.out.println("Class initializer called"); i = 6; } ``` 在靜態初始化器中,我們將消息打印到控制臺并初始化靜態變量。 ## Java 靜態嵌套類 靜態嵌套類是可以在沒有封閉類實例的情況下創建的嵌套類。 它可以訪問封閉類的靜態變量和方法。 靜態嵌套類可以在邏輯上對僅在一個地方使用的類進行分組。 它們增加了封裝并提供了更具可讀性和可維護性的代碼。 ### 靜態嵌套類的限制 靜態嵌套類無法調用非靜態方法或訪問封閉類實例的非靜態字段。 ### 靜態嵌套類示例 `JavaStaticNestedClass.java` ```java package com.zetcode; public class JavaStaticNestedClass { private static int x = 5; static class Nested { @Override public String toString() { return "This is a static nested class; x:" + x; } } public static void main(String[] args) { JavaStaticNestedClass.Nested sn = new JavaStaticNestedClass.Nested(); System.out.println(sn); } } ``` 該示例展示了一個靜態的嵌套類。 ```java private static int x = 5; ``` 這是`JavaStaticNestedClass`類的私有靜態變量。 可以通過靜態嵌套類訪問它。 ```java static class Nested { @Override public String toString() { return "This is a static nested class; x:" + x; } } ``` 定義了一個靜態的嵌套類。 它具有一種打印消息并引用靜態`x`變量的方法。 ```java JavaStaticNestedClass.Nested sn = new JavaStaticNestedClass.Nested(); ``` 點運算符用于引用嵌套類。 ## Java 靜態導入 靜態導入是 Java 5 中引入的一項功能,該功能允許在類中定義為`public static`的成員(字段和方法)在 Java 代碼中使用,而無需指定定義該字段的類。 ### 靜態導入的缺點 過度使用靜態導入功能會使我們的程序難以閱讀和無法維護,并使用我們導入的所有靜態成員污染其名稱空間。 ### 靜態導入示例 `JavaStaticImport.java` ```java package com.zetcode; import static java.lang.Math.PI; public class JavaStaticImport { public static void main(String[] args) { System.out.println(PI); } } ``` 在示例中,我們使用`PI`常量而不使用其類。 ## Java 常量 `static`修改器與`final`修改器結合使用,還可以定義常量。 `final`修飾符表示此字段的值不能更改。 ```java public static final double PI = 3.14159265358979323846; ``` 例如,在`java.lang.Math`中,我們有一個名為`PI`的常數,其值是`π`的近似值(圓的周長與其直徑之比)。 ## 單例模式 單例設計模式可確保在應用的生命周期中構造一個且只有一個特定類的對象。 `Singleton.java` ```java public class Singleton { private static final Singleton INSTANCE = new Singleton(); private Singleton() {} public static Singleton getInstance() { return INSTANCE; } } ``` 在此簡單的代碼摘錄中,我們對單個允許的對象實例具有內部靜態引用。 我們通過靜態方法訪問對象。 在本教程中,我們介紹了 Java `static`關鍵字。 您可能也對相關教程感興趣: [Java 中的`HashMap`迭代](/java/hashmapiterate/), [Java8 `forEach`教程](/articles/java8foreach/),[用 Java 閱讀文本文件](/articles/javareadtext/),[讀寫 Java 中的 ICO 圖像](/articles/javaico/), [Java 教程](/lang/java/),[在 Java 中顯示圖像](/java/displayimage/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看