中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中關鍵字static怎么用

發布時間:2021-08-21 11:22:54 來源:億速云 閱讀:161 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“java中關鍵字static怎么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“java中關鍵字static怎么用”這篇文章吧。

static是java中又一重要的關鍵字,在一定環境下使用,可以提高程序的運行性能,優化程序的結構。其主要應用有以下幾方面:

1.static修飾的成員變量,稱為類變量/靜態變量,以實現所有對象對該成員的共享。

2.static修飾的成員方法,稱為類方法/靜態方法,可直接通過類名調用,無需創建對象。

3.形成靜態代碼塊,優化程序性能。

4.靜態導包,一般將類的方法直接導入到當前類中,從而直接使用方法名即可調用類方法,更加方便。

5.修飾內部類,無需實例化外部類就可以調用內部類。

下面一附代碼說明:

public class Student {
    String name;
    static int age;
    public String toString() {
      return "Name:" + name + ", Age:" + age;
    }
    public static void main(String[] args) {
     Student s1 = new Student();
      s1.name="張三";
      s1.age=20;
      Student s2 = new Student();
      s2.name="李四";
      s2.age=10;
      System.out.println(s1);
      System.out.println(s2);
    }
}
/**輸出結果
Name:張三, Age:10
Name:李四, Age:10
*/

如上述代碼,s1和s2兩個對象分別存儲在內存中堆區域的不同地址中,所以他們之間相互不會干擾。然而static關鍵字修飾了成員變量age,讓其變成類的所屬,而不是對象的所屬,任何該類實例的對象都可以共享使用它。所以,輸出的age均是最終賦給的10。如果去掉static,顯然對象之間互不影響,輸出如下:

Name:張三, Age:20
Name:李四, Age:10

java中關鍵字static怎么用

如上述代碼,out1調用out2時出錯。由此代碼可得,靜態方法不能調用非靜態的成員變量和成員方法。非靜態方法可以調用靜態的成員變量和成員方法。注意,static不影響成員的訪問權限,Java中能夠影響到訪問權限的關鍵詞是private、public、protected,default。

public class Test extends Base{
  static{
    System.out.println("static靜態塊1");
  }
  public Test(){
    System.out.println("test構造器");
  }  
  public static void main(String[] args) {
    new Test();
  }
} 
class Base{
  static{
    System.out.println("static靜態塊2");
  }
  public Base(){
    System.out.println("base構造器");
  }
}

如上述代碼,記住兩句話,static代碼塊隨類的加載一起加載。static修飾的變量方法比其他變量方法優先加載,且只加載一次。加載子類時,會首先加載父類。由此可以分析:在執行開始,先要尋找到main方法,因為main方法是程序的入口,但是在執行main方法之前,必須先加載Test類,而在加載Test類的時候發現Test類繼承自Base類,因此會轉去先加載Base類,在加載Base類的時候,發現有static塊,便執行了static塊。在Base類加載完成之后,便繼續加載Test類,然后發現Test類中也有static塊,便執行static塊。在加載完所需的類之后,便開始執行main方法。在main方法中執行new Test()的時候會先調用父類的構造器,然后再調用自身的構造器。因此,運行結果如下:

static靜態塊2
static靜態塊1
base構造器
test構造器
/* A.java文件 */
package com.dogo.test;
public class A {
  public static void outWord(Object o){
    System.out.println(o);
  }
}
/* B.java文件 */
import static com.dogo.test.A.*;
public class B
{
  public static void main( String[] args )
  {
    outWord("Hello World!");
  }
  /**輸出
   * Hello World!
   */
}

如上述代碼,A.java中包含一個簡單的靜態方法,在B.java中我們用static關鍵字將A類導入,由此,便無需使用“類名.方法名”的方法去調用類方法了,直接可以采用"方法名"去調用類方法,就好像是該類自己的方法一樣。

/*Outer.java*/
public class Outer {
  static {
    System.out.println("Outer靜態塊");
  }
  public Outer(){
    System.out.println("Outer構造器");
  }
  static class Inner{
    static{
      System.out.println("Inner靜態塊");
    }
    
    public Inner(){
      System.out.println("Inner構造器");
    }
  }
}
/*Test.java*/
public class Test{
  public static void main(String[] args) {
    new Outer.Inner();
  }
}

如上述代碼,記住,用static修飾內部類,外部類可以直接調用內部類,因為static修飾的的內部類是在加載外部類的同時加載的,所以,并不要實例化外部類就能直接調用靜態內部類。例子中,在進入Test的main方法之前,加載Test類,然后執行new Outer.Inner();這里需要注意:因為Inner是靜態的,所以這里并不需要加載外部類和實例化外部類,可以直接加載Inner并實例化。運行結果如下:

Inner靜態塊
Inner構造器

大喬注:static另一個很重要的應用就是實現單例設計模式。單利模式的特點是該類只能有一個實例,為了實現這一功能,必須隱藏類的構造函數,即把構造函數聲明為private,并提供一個創建對象的方法,由于構造對象被聲明為private,外界無法直接創建這個類型的對象,只能通過該類提供的方法來獲取類的對象,于是只能把創建對象的方法聲明為static,程序實例如下:

class SingleDemo{ 
    private static SingleDemo ins=null; 
    private SingleDemo(){} 
    public static SingleDemo getIns(){ 
      if(ins==null){ 
        ins=new SingleDemo(); 
      } 
      return ins; 
    } 
  }

以上是“java中關鍵字static怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

翁牛特旗| 五河县| 中山市| 饶河县| 澜沧| 邢台县| 舞钢市| 昌乐县| 白水县| 温宿县| 尉氏县| 普陀区| 工布江达县| 揭西县| 大关县| 苏尼特左旗| 井陉县| 邛崃市| 南宫市| 安乡县| 桃园县| 信宜市| 新宾| 东山县| 普格县| 平顺县| 美姑县| 鸡泽县| 绍兴县| 茂名市| 黄冈市| 镇平县| 新田县| 调兵山市| 湖口县| 古田县| 永济市| 香河县| 伊吾县| 灌阳县| 利辛县|