變量名首寫字母使用小寫,若是由多個單詞組成,從第2個單詞開始的其餘單詞的首寫字母使用大寫。java
若是局部變量的名字和成員變量的名字相同, 要想在該方法中使用成員變量,必須使用關鍵字this函數
輸出結果:this
成員變量:spa
一、成員變量定義在類中,在整個類中均可以被訪問。.net
二、成員變量隨着對象的創建而創建,隨着對象的消失而消失,存在於對象所在的堆內存中。對象
三、成員變量有默認初始化值。blog
局部變量:生命週期
一、局部變量只定義在局部範圍內,如:函數內,語句內等,只在所屬的區域有效。ip
二、局部變量存在於棧內存中,做用的範圍結束,變量空間會自動釋放。內存
三、局部變量沒有默認初始化值
在使用變量時須要遵循的原則爲:就近原則
首先在局部範圍找,有就使用;接着在成員位置找。
成員變量和類變量的區別
由static修飾的變量稱爲靜態變量,其實質上就是一個全局變量。若是某個內容是被全部對象所共享,那麼該內容就應該用靜態修飾;沒有被靜態修飾的內容,實際上是屬於對象的特殊描述。
不一樣的對象的實例變量將被分配不一樣的內存空間, 若是類中的成員變量有類變量,那麼全部對象的這個類變量都分配給相同的一處內存,改變其中一個對象的這個類變量會影響其餘對象的這個類變量,也就是說對象共享類變量。
輸出結果:
成員變量和類變量的區別:
一、兩個變量的生命週期不一樣
成員變量隨着對象的建立而存在,隨着對象的回收而釋放。
靜態變量隨着類的加載而存在,隨着類的消失而消失。
二、調用方式不一樣
成員變量只能被對象調用。
靜態變量能夠被對象調用,還能夠被類名調用。
三、別名不一樣
成員變量也稱爲實例變量。
靜態變量也稱爲類變量。
四、數據存儲位置不一樣
成員變量存儲在堆內存的對象中,因此也叫對象的特有數據。
靜態變量數據存儲在方法區(共享數據區)的靜態區,因此也叫對象的共享數據。
static:★★★ 關鍵字,是一個修飾符,用於修飾成員(成員變量和成員函數)。
特色:
一、想要實現對象中的共性數據的對象共享。能夠將這個數據進行靜態修飾。
二、被靜態修飾的成員,能夠直接被類名所調用。也就是說,靜態的成員多了一種調用方式。類名.靜態方式。
三、靜態隨着類的加載而加載。並且優先於對象存在。
弊端:
一、有些數據是對象特有的數據,是不能夠被靜態修飾的。由於那樣的話,特有數據會變成對象的共享數據。這樣對事物的描述就出了問題。因此,在定義靜態時,必需要明確,這個數據是不是被對象所共享的。
二、靜態方法只能訪問靜態成員,不能夠訪問非靜態成員。
由於靜態方法加載時,優先於對象存在,因此沒有辦法訪問對象中的成員。
三、靜態方法中不能使用this,super關鍵字。
由於this表明對象,而靜態在時,有可能沒有對象,因此this沒法使用。
何時定義靜態成員呢?或者說:定義成員時,到底需不須要被靜態修飾呢?
成員分兩種:
一、成員變量。(數據共享時靜態化)
該成員變量的數據是不是全部對象都同樣:
若是是,那麼該變量須要被靜態修飾,由於是共享的數據。
若是不是,那麼就說這是對象的特有數據,要存儲到對象中。
二、成員函數。(方法中沒有調用特有數據時就定義成靜態)
若是判斷成員函數是否須要被靜態修飾呢?
只要參考,該函數內是否訪問了對象中的特有數據:
若是有訪問特有數據,那方法不能被靜態修飾。
若是沒有訪問過特有數據,那麼這個方法須要被靜態修飾。
成員變量和靜態變量的區別:
一、成員變量所屬於對象。因此也稱爲實例變量。
靜態變量所屬於類。因此也稱爲類變量。
二、成員變量存在於堆內存中。
靜態變量存在於方法區中。
三、成員變量隨着對象建立而存在。隨着對象被回收而消失。
靜態變量隨着類的加載而存在。隨着類的消失而消失。
四、成員變量只能被對象所調用 。
靜態變量能夠被對象調用,也能夠被類名調用。
因此,成員變量能夠稱爲對象的特有數據,靜態變量稱爲對象的共享數據。