靜態(tài)變量和實(shí)例變量的區(qū)別?

2018-07-03 14:19 更新
  • 在語(yǔ)法定義上的區(qū)別:靜態(tài)變量前要加static關(guān)鍵字,而實(shí)例變量前則不加。

  • 在程序運(yùn)行時(shí)的區(qū)別:實(shí)例變量屬于某個(gè)對(duì)象的屬性, 必須創(chuàng)建了實(shí)例對(duì)象(比如 new 一個(gè)), 其中的實(shí)例變量才會(huì)被分配空間, 才能使用這個(gè)實(shí)例變量. 靜態(tài)變量不屬于某個(gè)實(shí)例對(duì)象, 而是屬于類, 所以也稱為類變量, 只要程序加載了類的字節(jié)碼, 不用創(chuàng)建任何實(shí)例對(duì)象, 靜態(tài)變量就會(huì)被分配空間, 靜態(tài)變量就可以被使用了.

  • 總之,實(shí)例變量必須創(chuàng)建對(duì)象后才可以通過(guò)這個(gè)對(duì)象來(lái)使用,靜態(tài)變量則可以直接使用類名來(lái)引用.

例如, 對(duì)于下面的程序, 無(wú)論創(chuàng)建多少個(gè)實(shí)例對(duì)象, 永遠(yuǎn)都只分配了一個(gè)staticVar變量, 并且每創(chuàng)建一個(gè)實(shí)例對(duì)象, 這個(gè)staticVar就會(huì)加; 但是, 每創(chuàng)建一個(gè)實(shí)例對(duì)象, 就會(huì)分配一個(gè)instanceVar, 即可能分配多個(gè)instanceVar, 并且每個(gè)instanceVar的值都只自加了1次.

    public class VariantTest{


    public static int staticVar = 0;
           public int instanceVar = 0;

 
           public VariantTest(){
           staticVar++;
           instanceVar++;
           System.out.println(“staticVar=” + staticVar + ”,instanceVar=”+ instanceVar);
        }
     }
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)