實例變量和類變量的定義
在聲明成員變量時,用關(guān)鍵字static給予修飾的稱作類變量,類變量也稱為static變量或靜態(tài)變量,而沒有用關(guān)鍵字static給予修飾的稱作實例變量。
例如:
class Main { float x; //實例變量 static int y; //類變量 }
注意:
關(guān)鍵字static需要放在變量的類型前。
實例變量和類變量的區(qū)別
1. 不同對象的實例變量互不相同:
一個類通過使用new運算符可以創(chuàng)建多個不同的對象,這些對象將被分配不同的成員變量,分配給不同的對象的實例變量占有不同的內(nèi)存空間,改變其中一個對象的實例變量不會影響其他對象的實例變量。
2. 所有對象共享類變量:
如果類中有類變量,當使用new運算符創(chuàng)建多個不同的對象時,分配給這些對象的這個類變量占有相同的一處內(nèi)存,改變其中一個對象的這個類變量會影響其他對象的這個類變量,也就是說對象共享類變量。
3. 通過類名直接訪問類變量:
當Java程序執(zhí)行時,類的字節(jié)碼文件被加載到內(nèi)存,如果該類沒有創(chuàng)建對象,類中的實例變量不會被分配內(nèi)存。但是,類中的類變量,在該類被加載到內(nèi)存時,就分配了相應(yīng)的內(nèi)存空間。如果該類創(chuàng)建對象,那么不同對象的實例變量互不相同,即分配不同的內(nèi)存空間,而類變量不再重新分配內(nèi)存,所有的對象共享類變量,即所有的對象的類變量是相同的一處內(nèi)存空間,類變量的內(nèi)存空間直到程序退出運行,才釋放所占有的內(nèi)存。
因此,類變量不僅可以通過某個對象訪問,也可以直接通過類名訪問,而對象的實例變量可以通過該對象訪問,但不能使用類名訪問。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程