<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基本概念:** static 修飾符能夠與變量、方法一起使用,表示是“靜態”的。 靜態變量和靜態方法能夠通過類名來訪問,不需要創建一個類的對象來訪問該類的靜態成員,所以static修飾的成員又稱作類變量和類方法。靜態變量與實例變量不同,實例變量總是通過對象來訪問,因為它們的值在對象和對象之間有所不同。 請看下面的例子: ``` public class day09static{ static int i = 10; int j; day09static(){ this.j = 20; } public static void main(String [] args){ System.out.println("類變量i = " + day09static.i); day09static de = new day09static(); System.out.println("實例變量j = " + de.j); } } ``` **運行結果:** 類變量i = 10 實例變量j = 20 <br> <br> ## **static 的內存分配** 靜態變量屬于類,不屬于任何獨立的對象,所以無需創建類的實例就可以訪問靜態變量。之所以會產生這樣的結果,是因為編譯器只為整個類創建了一個靜態變量的副本,也就是只分配一個內存空間,雖然有多個實例,但這些實例共享該內存。實例變量則不同,每創建一個對象,都會分配一次內存空間,不同變量的內存相互獨立,互不影響,改變 a 對象的實例變量不會影響 b 對象。 ``` public class day10static{ static int i; int j; public static void main(String [] args){ day10static obj1 = new day10static(); obj1.i = 10; obj1.j = 20; day10static obj2 = new day10static(); System.out.println("obj1.i = " + obj1.i + " obj1.j = " + obj1.j); System.out.println("obj2.i = " + obj2.i + " obj2.j = " + obj2.j); } } ``` **運行結果:** obj1.i = 10 obj1.j = 20 obj2.i = 10 obj2.j = 0 :-: ![](https://img.kancloud.cn/df/57/df57d7035e03d6c427f807c7b8a71a2d_539x677.png) 注意:static 的變量是在類裝載的時候就會被初始化。也就是說,只要類被裝載,不管你是否使用了這個static 變量,它都會被初始化。 小結:類變量(class variables)用關鍵字 static 修飾,在類加載的時候,分配類變量的內存,以后再生成類的實例對象時,將共享這塊內存(類變量),任何一個對象對類變量的修改,都會影響其它對象。外部有兩種訪問方式:通過對象來訪問或通過類名來訪問。 ## 靜態方法 靜態方法是一種不能向對象實施操作的方法。例如,Math 類的 pow() 方法就是一個靜態方法,語法為 Math.pow(x, a),用來計算 x 的 a 次冪,在使用時無需創建任何 Math 對象。 因為靜態方法不能操作對象,所以不能在靜態方法中訪問實例變量,只能訪問自身類的靜態變量。 以下情形可以使用靜態方法: * 一個方法不需要訪問對象狀態,其所需參數都是通過顯式參數提供(例如 Math.pow())。 * 一個方法只需要訪問類的靜態變量。 讀者肯定注意到,main() 也是一個靜態方法,不對任何對象進行操作。實際上,在程序啟動時還沒有任何對象,main() 方法是程序的入口,將被執行并創建程序所需的對象。 關于靜態變量和靜態方法的總結: * 一個類的靜態方法只能訪問靜態變量; * 一個類的靜態方法不能夠直接調用非靜態方法; * 如訪問控制權限允許,靜態變量和靜態方法也可以通過對象來訪問,但是不被推薦; * 靜態方法中不存在當前對象,因而不能使用?this,當然也不能使用?super; * 靜態方法不能被非靜態方法覆蓋; * 構造方法不允許聲明為 static 的; * 局部變量不能使用static修飾。
                  <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>

                              哎呀哎呀视频在线观看