作用
有時你希望定義一個類成員,使它的使用完全獨立於該類的任何對象。通常情況下,類成員必須通過它的類的對象訪問,但是可以創建這樣一個成員,它能夠被它自己使用,而不必引用特定的實例。在成員的聲明前面加上關鍵字static(靜態的)就能創建這樣的成員。如果一個成員被聲明爲static,它就能夠在它的類的任何對象創建之前被訪問,而不必引用任何對象。你可以將方法和變量都聲明爲static。static 成員的最常見的例子是main( ) 。因爲在程序開始執行時必須調用main() ,所以它被聲明爲static。
聲明爲static的變量實質上就是全局變量。當聲明一個對象時,並不產生static變量的拷貝,而是該類所有的實例變量共同擁有一個static變量。聲明爲static的方法有以下幾條限制:
(1)它們僅能調用其他的static 方法。
(2)它們只能訪問static數據。
(3)它們不能以任何方式引用this 或super(關鍵字super 與繼承有關)。
舉例
如果你需要通過計算來初始化你的static變量,你可以聲明一個static塊,Static 塊僅在該類被加載時執行一次。下面的例子顯示的類有一個static方法,一些static變量,以及一個static 初始化塊:
// Demonstrate static variables,methods,and blocks.
class UseStatic {
static int a = 3;
static int b;
static void meth(int x) {
System.out.println("x = " + x);
System.out.println("a = " + a);
System.out.println("b = " + b);
}
static {
System.out.println("Static block initialized.");
b = a * 4;
}
public static void main(String args[]) {
meth(42);
}
}
一旦UseStatic 類被裝載,所有的static語句被運行。首先,a被設置爲3,接着static 塊執行(打印一條消息),最後,b被初始化爲a*4 或12。然後調用main(),main() 調用meth() ,把值42傳遞給x。3個println ( ) 語句引用兩個static變量a和b,以及局部變量x 。
注意:在一個static 方法中引用任何實例變量都是非法的。
下面是該程序的輸出:
Static block initialized.
x = 42
a = 3
b = 12
Java中static關鍵字
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
JAVA類反射之類的調用
学习的流浪者
2020-07-01 08:32:24
apache--BeanUtils工具類底層代碼演示
学习的流浪者
2020-07-01 08:32:24
面向對象三大特性和含義
Zero_Darker
2020-02-21 12:32:08
java中泛型的理解
liubo0325
2018-09-01 08:59:33
UDP協議發送和接收消息案例詳解
liubo0325
2018-09-01 08:59:33
Java中動態數組的理解
liubo0325
2018-09-01 08:58:12
String中matches用法
鸭子
2018-08-30 19:11:04
父類引用指向子類對象
鸭子
2018-08-30 19:11:04
Java 中Random(seed)方法
鸭子
2018-08-30 19:11:03
Java面向對象總結
qq_40645462
2018-08-30 03:27:17
Java面向對象總結
qq_40645462
2018-08-30 03:05:53
Java面向對象總結
qq_40645462
2018-08-30 02:44:28
java面向對象之多態
UMRjaelYn
2018-08-26 03:50:34
24小時熱門文章
-
再談23種設計模式(3):行爲型模式(學習筆記)
-
Power Automate Desktop 安裝完,登錄後老是提示one driver 錯誤
-
微前端學習筆記(4):從微前端到微模塊之EMP與hel-micro方案探索
-
微前端學習筆記(1):微前端總體架構概述,從微服務發微
-
985 碩士程序員,空窗 4 個月沒有 Offer!
-
一文搞懂 Spring 循環依賴
-
賽博鬥地主——使用大語言模型扮演Agent智能體玩牌類遊戲。
-
VScode右鍵打開(添加到右鍵)
-
記一次 .NET某工控視覺自動化系統 卡死分析
-
WindowsServer--SQL Server搭建主從同步實現讀寫分離 - 事務性分發