全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)常見(jiàn)問(wèn)題正文

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

更新時(shí)間:2023-05-15 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在Java中,靜態(tài)變量和實(shí)例變量是兩種不同的變量類(lèi)型,它們有以下的區(qū)別:

  1.靜態(tài)變量屬于類(lèi),而不是類(lèi)的任何實(shí)例。實(shí)例變量屬于類(lèi)的實(shí)例。

  2.靜態(tài)變量只有一個(gè)副本,無(wú)論類(lèi)被實(shí)例化多少次,它始終是相同的。實(shí)例變量每個(gè)實(shí)例都有自己的副本。

  3.靜態(tài)變量可以直接從類(lèi)中訪(fǎng)問(wèn),無(wú)需實(shí)例化。實(shí)例變量必須通過(guò)實(shí)例化對(duì)象后才能訪(fǎng)問(wèn)。

1684116592119_Java靜態(tài)變量和實(shí)例變量的區(qū)別.jpg

  接下來(lái)我們看一段簡(jiǎn)單的Java代碼示例,演示靜態(tài)變量和實(shí)例變量的區(qū)別:

public class Example {
    static int staticVariable = 10; // 靜態(tài)變量
    int instanceVariable = 20; // 實(shí)例變量

    public static void main(String[] args) {
        Example obj1 = new Example();
        Example obj2 = new Example();

        // 靜態(tài)變量可以通過(guò)類(lèi)名直接訪(fǎng)問(wèn)
        System.out.println("靜態(tài)變量staticVariable值為:" + Example.staticVariable);

        // 實(shí)例變量必須通過(guò)實(shí)例對(duì)象訪(fǎng)問(wèn)
        System.out.println("obj1的實(shí)例變量instanceVariable值為:" + obj1.instanceVariable);
        System.out.println("obj2的實(shí)例變量instanceVariable值為:" + obj2.instanceVariable);

        // 修改靜態(tài)變量的值
        Example.staticVariable = 30;

        // 打印修改后的靜態(tài)變量值
        System.out.println("靜態(tài)變量staticVariable值為:" + Example.staticVariable);
        System.out.println("obj1的靜態(tài)變量staticVariable值為:" + obj1.staticVariable);
        System.out.println("obj2的靜態(tài)變量staticVariable值為:" + obj2.staticVariable);

        // 修改實(shí)例變量的值
        obj1.instanceVariable = 40;

        // 打印修改后的實(shí)例變量值
        System.out.println("obj1的實(shí)例變量instanceVariable值為:" + obj1.instanceVariable);
        System.out.println("obj2的實(shí)例變量instanceVariable值為:" + obj2.instanceVariable);
    }
}

  輸出結(jié)果如下:

靜態(tài)變量staticVariable值為:10
obj1的實(shí)例變量instanceVariable值為:20
obj2的實(shí)例變量instanceVariable值為:20
靜態(tài)變量staticVariable值為:30
obj1的靜態(tài)變量staticVariable值為:30
obj2的靜態(tài)變量staticVariable值為:30
obj1的實(shí)例變量instanceVariable值為:40
obj2的實(shí)例變量instanceVariable值為:20

  可以看到,靜態(tài)變量只有一個(gè)副本,可以通過(guò)類(lèi)名直接訪(fǎng)問(wèn)。實(shí)例變量每個(gè)實(shí)例都有自己的副本,必須通過(guò)實(shí)例對(duì)象訪(fǎng)問(wèn)。當(dāng)修改靜態(tài)變量時(shí),所有實(shí)例都會(huì)受到影響。當(dāng)修改實(shí)例變量時(shí),只有該實(shí)例會(huì)受到影響。

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!