Java中有兩種成員變量,一種是靜態(tài)變量,另一種是動(dòng)態(tài)變量。這兩種變量的區(qū)別非常重要,因?yàn)樗鼈兊氖褂梅绞胶妥饔梅秶煌?/p>
Java中的靜態(tài)變量是指在類中定義的變量,被所有實(shí)例共享。靜態(tài)變量在類被載入時(shí)就已經(jīng)被創(chuàng)建,它們的值可以在不同的實(shí)例之間共享。靜態(tài)變量使用static關(guān)鍵字來修飾,可以通過類名直接訪問,而不需要?jiǎng)?chuàng)建類的實(shí)例。
public class Example{ static int count = 0; public Example(){ count++; } }
上面的代碼中定義了一個(gè)靜態(tài)變量count,每次創(chuàng)建Example類的實(shí)例時(shí),count的值就加1。由于count是靜態(tài)變量,所以每個(gè)Example類的實(shí)例都可以訪問和修改這個(gè)變量。
相反,Java中的動(dòng)態(tài)變量是指在類中定義的非靜態(tài)變量。每個(gè)實(shí)例會(huì)有自己的一份動(dòng)態(tài)變量。動(dòng)態(tài)變量在實(shí)例化對象時(shí)被創(chuàng)建,它們只能被該實(shí)例訪問和修改。
public class Example{ int num; public Example(int num){ this.num = num; } }
上面的代碼中定義了一個(gè)動(dòng)態(tài)變量num,每個(gè)Example類的實(shí)例都擁有自己的num變量。在創(chuàng)建Example類的實(shí)例時(shí),需要給num變量賦一個(gè)值。
總的來說,靜態(tài)變量在內(nèi)存中只有一份,可以被多個(gè)實(shí)例共享,而動(dòng)態(tài)變量在每個(gè)實(shí)例中都有一份獨(dú)立的內(nèi)存,只能被該實(shí)例訪問和修改。使用靜態(tài)變量和動(dòng)態(tài)變量時(shí)要根據(jù)實(shí)際情況進(jìn)行選擇,以便實(shí)現(xiàn)最優(yōu)的代碼效率和內(nèi)存利用。