在Java程序中,變量和靜態(tài)變量是經(jīng)常使用的兩種數(shù)據(jù)類型。他們?cè)诟拍钌戏浅O嗨?,但是在使用上也存在不同點(diǎn)。下面將介紹Java中靜態(tài)和變量的區(qū)別。
public class Example { int a; // 這是一個(gè)實(shí)例變量 static int b; // 這是一個(gè)靜態(tài)變量 public void test() { a = 1; b = 2; } public static void main(String[] args) { Example ex1 = new Example(); Example ex2 = new Example(); ex1.a = 3; ex1.b = 4; System.out.println("ex2.a=" + ex2.a); System.out.println("ex2.b=" + ex2.b); } }
實(shí)例變量是屬于類的對(duì)象的變量,每個(gè)對(duì)象都有自己的實(shí)例變量,而靜態(tài)變量是屬于類的變量,所有對(duì)象共享一個(gè)靜態(tài)變量。
在上面的例子中,我們初始化了類Example的兩個(gè)實(shí)例ex1和ex2,分別設(shè)置了他們的實(shí)例變量a和靜態(tài)變量b的值,并打印了ex2的a和b的值。執(zhí)行結(jié)果:
ex2.a=0 ex2.b=4
從結(jié)果中可以看出,ex2的實(shí)例變量a的值為0,因?yàn)槲覀儧]有初始化ex2的a變量。而靜態(tài)變量b的值為4,因?yàn)閑x1對(duì)靜態(tài)變量b的修改對(duì)所有實(shí)例對(duì)象都是可見的,也即在靜態(tài)變量b賦值之前,所有實(shí)例對(duì)象的靜態(tài)變量b的值都是0。
綜上所述,Java中靜態(tài)變量和實(shí)例變量的區(qū)別在于,實(shí)例變量屬于對(duì)象的變量,每個(gè)對(duì)象都有自己的實(shí)例變量,而靜態(tài)變量是屬于類的變量,多個(gè)對(duì)象共享一個(gè)靜態(tài)變量。