變量名首寫(xiě)字母使用小寫(xiě),如果由多個(gè)單詞組成,從第2個(gè)單詞開(kāi)始的其他單詞的首寫(xiě)字母使用大寫(xiě)。 如果局部變量的名字和成員變量的名字相同, 要想在該方法中使用成員變量,必須使用關(guān)鍵字this。
class People { String name = "類(lèi)體重定義的name"; //類(lèi)中的成員變量并賦值 People(){ } public void speak() { String name = "類(lèi)體方法中定義的name"; //在方法speak中定義和成員變量名字相同的name并賦值 System.out.PRintln(name); System.out.println(this.name); //通過(guò)this來(lái)訪問(wèn)類(lèi)中的成員變量 } } public class TestThis { //源文件中只能有一個(gè)類(lèi)是public類(lèi),并且源文件的名字必須與這個(gè)類(lèi)的名字完全相同,如 //果沒(méi)有public類(lèi),那么源文件的名字只要和某個(gè)類(lèi)的名字相同就可以了。 public static void main(String[] args) { People myPeople = new People(); myPeople.speak(); } }
成員變量和局部變量的區(qū)別
成員變量: 1、成員變量定義在類(lèi)中,在整個(gè)類(lèi)中都可以被訪問(wèn)。 2、成員變量隨著對(duì)象的建立而建立,隨著對(duì)象的消失而消失,存在于對(duì)象所在的堆內(nèi)存中。 3、成員變量有默認(rèn)初始化值。
局部變量: 1、局部變量只定義在局部范圍內(nèi),如:函數(shù)內(nèi),語(yǔ)句內(nèi)等,只在所屬的區(qū)域有效。 2、局部變量存在于棧內(nèi)存中,作用的范圍結(jié)束,變量空間會(huì)自動(dòng)釋放。 3、局部變量沒(méi)有默認(rèn)初始化值 在使用變量時(shí)需要遵循的原則為:就近原則 首先在局部范圍找,有就使用;接著在成員位置找。
成員變量和類(lèi)變量的區(qū)別 
由static修飾的變量稱(chēng)為靜態(tài)變量,其實(shí)質(zhì)上就是一個(gè)全局變量。如果某個(gè)內(nèi)容是被所有對(duì)象所共享,那么該內(nèi)容就應(yīng)該用靜態(tài)修飾;沒(méi)有被靜態(tài)修飾的內(nèi)容,其實(shí)是屬于對(duì)象的特殊描述。 不同的對(duì)象的實(shí)例變量將被分配不同的內(nèi)存空間, 如果類(lèi)中有類(lèi)變量,那么所有對(duì)象的這個(gè)類(lèi)變量都分配給相同的一處內(nèi)存,改變其中一個(gè)對(duì)象的這個(gè)類(lèi)變量會(huì)影響其他對(duì)象的這個(gè)類(lèi)變量,也就是說(shuō)對(duì)象共享類(lèi)變量。
class MyAdd { int count = 0; //成員變量計(jì)數(shù)器 static int sum = 0; //靜態(tài)變量計(jì)數(shù)器 String name; MyAdd(String name){ this.name = name; } public void myAddMethod() { count++; System.out.println(name+"調(diào)用成員變量后的值:"+count); } public void staticAddMethod() { sum++; System.out.println(name+"調(diào)用類(lèi)后變量的值:"+sum); } } public class TestThis { public static void main(String[] args) { MyAdd add1 = new MyAdd("add1"); MyAdd add2 = new MyAdd("add2"); add1.myAddMethod(); add2.myAddMethod(); add1.myAddMethod(); add1.staticAddMethod(); add2.staticAddMethod(); add1.staticAddMethod(); } }
上述方法的內(nèi)存結(jié)構(gòu)示意圖: 
成員變量和類(lèi)變量的區(qū)別: 1、兩個(gè)變量的生命周期不同 成員變量隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的回收而釋放。 靜態(tài)變量隨著類(lèi)的加載而存在,隨著類(lèi)的消失而消失。 2、調(diào)用方式不同 成員變量只能被對(duì)象調(diào)用。 靜態(tài)變量可以被對(duì)象調(diào)用,還可以被類(lèi)名調(diào)用。 3、別名不同 成員變量也稱(chēng)為實(shí)例變量。 靜態(tài)變量也稱(chēng)為類(lèi)變量。 4、數(shù)據(jù)存儲(chǔ)位置不同 成員變量存儲(chǔ)在堆內(nèi)存的對(duì)象中,所以也叫對(duì)象的特有數(shù)據(jù)。 靜態(tài)變量數(shù)據(jù)存儲(chǔ)在方法區(qū)(共享數(shù)據(jù)區(qū))的靜態(tài)區(qū),所以也叫對(duì)象的共享數(shù)據(jù)。
static:★★★ 關(guān)鍵字,是一個(gè)修飾符,用于修飾成員(成員變量和成員函數(shù))。 特點(diǎn): 1、想要實(shí)現(xiàn)對(duì)象中的共性數(shù)據(jù)的對(duì)象共享。可以將這個(gè)數(shù)據(jù)進(jìn)行靜態(tài)修飾。 2、被靜態(tài)修飾的成員,可以直接被類(lèi)名所調(diào)用。也就是說(shuō),靜態(tài)的成員多了一種調(diào)用方式。類(lèi)名.靜態(tài)方式。 3、靜態(tài)隨著類(lèi)的加載而加載。而且優(yōu)先于對(duì)象存在。
弊端: 1、有些數(shù)據(jù)是對(duì)象特有的數(shù)據(jù),是不可以被靜態(tài)修飾的。因?yàn)槟菢拥脑挘赜袛?shù)據(jù)會(huì)變成對(duì)象的共享數(shù)據(jù)。這樣對(duì)事物的描述就出了問(wèn)題。所以,在定義靜態(tài)時(shí),必須要明確,這個(gè)數(shù)據(jù)是否是被對(duì)象所共享的。 2、靜態(tài)方法只能訪問(wèn)靜態(tài)成員,不可以訪問(wèn)非靜態(tài)成員。 因?yàn)殪o態(tài)方法加載時(shí),優(yōu)先于對(duì)象存在,所以沒(méi)有辦法訪問(wèn)對(duì)象中的成員。 3、靜態(tài)方法中不能使用this,super關(guān)鍵字。 因?yàn)閠his代表對(duì)象,而靜態(tài)在時(shí),有可能沒(méi)有對(duì)象,所以this無(wú)法使用。
什么時(shí)候定義靜態(tài)成員呢?或者說(shuō):定義成員時(shí),到底需不需要被靜態(tài)修飾呢? 成員分兩種: 1、成員變量。(數(shù)據(jù)共享時(shí)靜態(tài)化) 該成員變量的數(shù)據(jù)是否是所有對(duì)象都一樣: 如果是,那么該變量需要被靜態(tài)修飾,因?yàn)槭枪蚕淼臄?shù)據(jù)。 如果不是,那么就說(shuō)這是對(duì)象的特有數(shù)據(jù),要存儲(chǔ)到對(duì)象中。 2、成員函數(shù)。(方法中沒(méi)有調(diào)用特有數(shù)據(jù)時(shí)就定義成靜態(tài)) 如果判斷成員函數(shù)是否需要被靜態(tài)修飾呢? 只要參考,該函數(shù)內(nèi)是否訪問(wèn)了對(duì)象中的特有數(shù)據(jù): 如果有訪問(wèn)特有數(shù)據(jù),那方法不能被靜態(tài)修飾。 如果沒(méi)有訪問(wèn)過(guò)特有數(shù)據(jù),那么這個(gè)方法需要被靜態(tài)修飾。
成員變量和靜態(tài)變量的區(qū)別: 1、成員變量所屬于對(duì)象。所以也稱(chēng)為實(shí)例變量。 靜態(tài)變量所屬于類(lèi)。所以也稱(chēng)為類(lèi)變量。 2、成員變量存在于堆內(nèi)存中。 靜態(tài)變量存在于方法區(qū)中。 3、成員變量隨著對(duì)象創(chuàng)建而存在。隨著對(duì)象被回收而消失。 靜態(tài)變量隨著類(lèi)的加載而存在。隨著類(lèi)的消失而消失。 4、成員變量只能被對(duì)象所調(diào)用 。 靜態(tài)變量可以被對(duì)象調(diào)用,也可以被類(lèi)名調(diào)用。 所以,成員變量可以稱(chēng)為對(duì)象的特有數(shù)據(jù),靜態(tài)變量稱(chēng)為對(duì)象的共享數(shù)據(jù)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注