Java是一種對象導(dǎo)向的編程語言,面向?qū)ο缶幊痰幕A(chǔ)是“類”,而“類”中最重要的概念之一就是“變量”。
在Java類中,變量分為“成員變量”和“局部變量”。其中,“成員變量”又可分為“類變量”和“實例變量”。下面我們來詳細(xì)了解一下成員變量和實例變量的區(qū)別:
/** * 演示成員變量和實例變量的區(qū)別 */ public class Demo { /* * 類變量,所有實例共享 */ static int i; /* * 實例變量,每個實例單獨(dú)擁有一份 */ int j; public static void main(String[] args) { Demo d1 = new Demo(); Demo d2 = new Demo(); d1.i++; d1.j++; d2.i++; d2.j++; System.out.println("d1.i=" + d1.i + ", d1.j=" + d1.j);//輸出:d1.i=2, d1.j=1 System.out.println("d2.i=" + d2.i + ", d2.j=" + d2.j);//輸出:d2.i=2, d2.j=1 System.out.println("Demo.i=" + Demo.i);//輸出:Demo.i=2 } }
如上述代碼所示,成員變量分為“類變量”和“實例變量”。類變量使用static關(guān)鍵字修飾,而實例變量不需要。類變量又稱為靜態(tài)變量,它在整個類中只有一份,被所有實例對象共享,通常用于記錄全局性質(zhì)的數(shù)據(jù)。實例變量則是每個實例對象單獨(dú)擁有一份,不同實例對象的實例變量之間互不影響。
在上述代碼中,我們創(chuàng)建了兩個實例對象d1和d2,分別操作了他們的成員變量i和j,最終打印出了每個變量的值。我們會發(fā)現(xiàn),d1和d2的i變量值是相等的都是2,這就是因為它們是共享的類變量。但是j變量的值卻是不同的,這是因為j是實例變量,每個實例對象單獨(dú)擁有一份。
總之,成員變量是分為“類變量”和“實例變量”的,類變量只有一份是被整個類共享的,而實例變量則是每個實例對象單獨(dú)擁有一份,互不干擾。我們需要根據(jù)具體的需求進(jìn)行選擇。