<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### [static關鍵字](https://lingcoder.gitee.io/onjava8/#/book/03-Objects-Everywhere?id=static%e5%85%b3%e9%94%ae%e5%ad%97) 類是對象的外觀及行為方式的描述。通常只有在使用`new`創建那個類的對象后,數據存儲空間才被分配,對象的方法才能供外界調用。這種方式在兩種情況下是不足的。 1. 有時你只想為特定字段(注:也稱為屬性、域)分配一個共享存儲空間,而不去考慮究竟要創建多少對象,甚至根本就不創建對象。 2. 創建一個與此類的任何對象無關的方法。也就是說,即使沒有創建對象,也能調用該方法。 **static**關鍵字(從 C++ 采用)就符合上述兩點要求。當我們說某個事物是靜態時,就意味著該字段或方法不依賴于任何特定的對象實例 。 即使我們從未創建過該類的對象,也可以調用其靜態方法或訪問其靜態字段。相反,對于普通的非靜態字段和方法,我們必須要先創建一個對象并使用該對象來訪問字段或方法,因為非靜態字段和方法必須與特定對象關聯[^6](https://lingcoder.gitee.io/onjava8/#/%E9%9D%99%E6%80%81%E6%96%B9%E6%B3%95%E5%9C%A8%E4%BD%BF%E7%94%A8%E4%B9%8B%E5%89%8D%E4%B8%8D%E9%9C%80%E8%A6%81%E5%88%9B%E5%BB%BA%E5%AF%B9%E8%B1%A1%EF%BC%8C%E5%9B%A0%E6%AD%A4%E5%AE%83%E4%BB%AC%E4%B8%8D%E8%83%BD%E7%9B%B4%E6%8E%A5%E8%B0%83%E7%94%A8%E9%9D%9E%E9%9D%99%E6%80%81%E7%9A%84%E6%88%90%E5%91%98%E6%88%96%E6%96%B9%E6%B3%95%EF%BC%88%E5%9B%A0%E4%B8%BA%E9%9D%9E%E9%9D%99%E6%80%81%E6%88%90%E5%91%98%E5%92%8C%E6%96%B9%E6%B3%95%E5%BF%85%E9%A1%BB%E8%A6%81%E5%85%88%E5%AE%9E%E4%BE%8B%E5%8C%96%E4%B8%BA%E5%AF%B9%E8%B1%A1%E6%89%8D%E5%8F%AF%E4%BB%A5%E8%A2%AB%E4%BD%BF%E7%94%A8%EF%BC%89%E3%80%82)。 一些面向對象的語言使用類數據(class data)和類方法(class method),表示靜態數據和方法只是作為類,而不是類的某個特定對象而存在的。有時 Java 文獻也使用這些術語。 我們可以在類的字段或方法前添加`static`關鍵字來表示這是一個靜態字段或靜態方法。 代碼示例: ~~~ class StaticTest { static int i = 47; } ~~~ 現在,即使你創建了兩個`StaticTest`對象,但是靜態變量`i`仍只占一份存儲空間。兩個對象都會共享相同的變量`i`。 代碼示例: ~~~ StaticTest st1 = new StaticTest(); StaticTest st2 = new StaticTest(); ~~~ `st1.i`和`st2.i`指向同一塊存儲空間,因此它們的值都是 47。引用靜態變量有兩種方法。在前面的示例中,我們通過一個對象來定位它,例如`st2.i`。我們也可以通過類名直接引用它,這種方式對于非靜態成員則不可行: ~~~ StaticTest.i++; ~~~ `++`運算符將會使變量結果 + 1。此時`st1.i`和`st2.i`的值都變成了 48。 使用類名直接引用靜態變量是首選方法,因為它強調了變量的靜態屬性。類似的邏輯也適用于靜態方法。我們可以通過對象引用靜態方法,就像使用任何方法一樣,也可以通過特殊的語法方式`Classname.method()`來直接調用靜態字段或方法[^7](https://lingcoder.gitee.io/onjava8/#/%E5%9C%A8%E6%9F%90%E4%BA%9B%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E5%AE%83%E8%BF%98%E4%B8%BA%E7%BC%96%E8%AF%91%E5%99%A8%E6%8F%90%E4%BE%9B%E4%BA%86%E6%9B%B4%E5%A5%BD%E7%9A%84%E4%BC%98%E5%8C%96%E5%8F%AF%E8%83%BD%E3%80%82)。 代碼示例: ~~~ class Incrementable { static void increment() { StaticTest.i++; } } ~~~ 上例中,`Incrementable`的`increment()`方法通過`++`運算符將靜態數據`i`加 1。我們依然可以先實例化對象再調用該方法。 代碼示例: ~~~ Incrementable sf = new Incrementable(); sf.increment(); ~~~ 當然了,首選的方法是直接通過類來調用它。代碼示例: ~~~ Incrementable.increment(); ~~~ 相比非靜態的對象,`static`屬性改變了數據創建的方式。同樣,當`static`關鍵字修飾方法時,它允許我們無需創建對象就可以直接通過類的引用來調用該方法。正如我們所知,`static`關鍵字的這些特性對于應用程序入口點的`main()`方法尤為重要。
                  <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>

                              哎呀哎呀视频在线观看