程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JAVA中static辦法的用法實例詳解

JAVA中static辦法的用法實例詳解

編輯:關於JAVA

JAVA中static辦法的用法實例詳解。本站提示廣大學習愛好者:(JAVA中static辦法的用法實例詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是JAVA中static辦法的用法實例詳解正文


本文實例講述了JAVA中static辦法的用法。分享給年夜家供年夜家參考,詳細以下:

static表現“全局”或許“靜態”的意思,用來潤飾成員變量和成員辦法,也能夠構成靜態static代碼塊,然則Java說話中沒有全局變量的概念。

被static潤飾的成員變量和成員辦法自力於該類的任何對象。也就是說,它不依附類特定的實例,被類的一切實例同享。只需這個類被加載,Java虛擬機就可以依據類名在運轉時數據區或許辦法區內找到他們。是以,static對象可以在它的任何對象創立之前拜訪,無需援用任何對象。

用public潤飾的static成員變量和成員辦法實質是全局變量和全局辦法,當聲明它類的對象時,不生成static變量的正本,而是類的一切實例同享統一個static變量。

static變量前可以有private潤飾,表現這個變量可以在類的靜態代碼塊中,或許類的其他靜態成員辦法中應用(固然也能夠在非靜態成員辦法中應用),然則不克不及在其他類中經由過程類名來直接援用,這一點很主要。現實上你須要弄明確,private是拜訪權限限制,static表現不要實例化便可以應用,如許就輕易懂得多了。static後面加上其它拜訪權限症結字的後果也以此類推。

static潤飾的成員變量和成員辦法習氣上稱為靜態變量和靜態辦法,可以直接經由過程類名來拜訪,拜訪語法為:

類名.靜態辦法名(參數列表...)

類名.靜態變量名

用static潤飾的代碼塊表現靜態代碼塊,當Java虛擬機(JVM)加載類時,就會履行該代碼塊(用途異常年夜)。

static變量

依照能否靜態的對類成員變量停止分類可分兩種:一種是被static潤飾的變量,叫靜態變量或類變量;另外一種是沒有被static潤飾的變量,叫實例變量。二者的差別是:

關於靜態變量在內存中只要一個拷貝(節儉內存),JVM只為靜態分派一次內存,在加載類的進程中完成靜態變量的內存分派,可用類名直接拜訪(便利),固然也能夠經由過程對象來拜訪(然則這是不推舉的)。

關於實例變量,每創立一個實例,就會為實例變量分派一次內存,實例變量可以在內存中有多個拷貝,互不影響(靈巧)。

靜態辦法

靜態辦法可以直接經由過程類名挪用,任何的實例也都可以挪用,是以靜態辦法中不克不及用this和super症結字,不克不及直接拜訪所屬類的實例變量和實例辦法(就是不帶static的成員變量和成員辦法),只能拜訪所屬類的靜態成員變量和成員辦法。由於實例成員與特定的對象聯系關系!

由於static辦法自力於任何實例,是以static辦法必需被完成,而不克不及是籠統的abstract。

static代碼塊

static代碼塊也叫靜態代碼塊,是在類中自力於類成員的static語句塊,可以有多個,地位可以隨意放,它不在任何的辦法體內,JVM加載類時會履行這些靜態的代碼塊,假如static代碼塊有多個,JVM將依照它們在類中湧現的前後次序順次履行它們,每一個代碼塊只會被履行一次。例如:

package staticPackage;
public class testStatic {
  private static int a;// 靜態變量
  private int b;// 實例變量
  static {
    testStatic.a = 3;
    System.out.println(a);
    testStatic t = new testStatic();
    t.f();
    t.b = 1000;
    System.out.println(t.b);
  }
  static {
    testStatic.a = 4;
    System.out.println(a);
  }
  public static void main(String[] args) {
    // TODO 主動生成辦法存根
  }
  static {
    testStatic.a = 5;
    System.out.println(a);
  }
  public void f() {
    System.out.println("method f() executing...");
  }
  /**
   * 3
   * method f() executing...
   * 1000
   * 4
   * 5
   */
}

應用靜態代碼塊可以對一些static變量停止賦值,最初再看一眼這些例子,有一個static的main辦法,如許JVM在運轉main辦法的時刻可以直接挪用而不消創立實例。這時候候我們去看《實例剖析Java中public static void main(String args[])是甚麼意思》這篇文章應當也好懂得了吧。

願望本文所述對年夜家Java法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved