java局部變量和成員變量 請問java中的成員變量,局部變量,靜態(tài)變量和實(shí)例變量都有什么關(guān)系?怎么理解和使用?
請問java中的成員變量,局部變量,靜態(tài)變量和實(shí)例變量都有什么關(guān)系?怎么理解和使用?成員變量:在類中定義的變量,也稱為類屬性局部變量:方法中定義的變量靜態(tài)變量:由靜態(tài)修飾符(成員變量或局部變量)修改的
請問java中的成員變量,局部變量,靜態(tài)變量和實(shí)例變量都有什么關(guān)系?怎么理解和使用?
成員變量:在類中定義的變量,也稱為類屬性
局部變量:方法中定義的變量
靜態(tài)變量:由靜態(tài)修飾符(成員變量或局部變量)修改的變量
實(shí)例變量:類實(shí)例化后的屬性(成員變量)
Java成員變量和靜態(tài)變量:
1,成員變量所屬的對象。所以也叫實(shí)例變量。靜態(tài)變量所屬的類。所以也叫類變量。
2. 堆內(nèi)存中存在成員變量。方法區(qū)域中存在靜態(tài)變量。
3. 成員變量隨對象的創(chuàng)建而存在。當(dāng)物體被回收時(shí)消失。靜態(tài)變量在類加載時(shí)存在。當(dāng)類消失時(shí),它也消失了。
4. 成員變量只能由對象調(diào)用。靜態(tài)變量可以由對象或類名調(diào)用。因此,成員變量可以稱為對象的唯一數(shù)據(jù),靜態(tài)變量可以稱為對象的共享數(shù)據(jù)。
靜態(tài)變量和成員變量的區(qū)別太難理解了?
不,因?yàn)镴ava中的靜態(tài)內(nèi)容是類級別的,也就是說,可以用類名或任何對象名訪問它們。無論以何種形式訪問,它們都是同一事物。一般來說,成員變量是指對象層次,即每個(gè)對象所擁有的成員變量是獨(dú)立的、不同的,屬于對象本身。與訪問范圍相比,它更為靜態(tài),靜態(tài)可以被任何對象訪問并且是相同的,成員變量是每個(gè)對象所擁有的。所以,為什么“靜態(tài)方法不能調(diào)用類成員變量”是因?yàn)橐L問成員變量,必須有一個(gè)“實(shí)例化對象”。除非在靜態(tài)方法中創(chuàng)建當(dāng)前類的實(shí)例對象,否則不能直接調(diào)用成員變量,因?yàn)樗恢莱蓡T變量屬于哪個(gè)實(shí)例對象。在成員方法中,可以確定屬于該成員的所有變量和方法屬于同一個(gè)對象,這可以用來表示當(dāng)前對象。