成員變量和局部變量的區別
? ? ? ?成員變量:
? ? ? ? ? 1、成員變量定義在類中,在整個類中都可以被訪問。
? ? ? ? ? 2、成員變量隨著對象的建立而建立,隨著對象的消失而消失,存在于對象所在的堆內存中。
? ? ? ? ??3、成員變量有默認初始化值。
? ? ? 局部變量:
? ? ? ? ? 1、局部變量只定義在局部范圍內,如:函數內,語句內等,只在所屬的區域有效。
? ? ? ? ? 2、局部變量存在于棧內存中,作用的范圍結束,變量空間會自動釋放。
? ? ? ? ? 3、局部變量沒有默認初始化值?
? ? ? 在使用變量時需要遵循的原則為:就近原則
? ? ? 首先在局部范圍找,有就使用;接著在成員位置找。
? ? ? ?由static修飾的變量稱為靜態變量,其實質上就是一個全局變量。如果某個內容是被所有對象所共享,那么該內容就應該用靜態修飾;沒有被靜態修飾的內容,其實是屬于對象的 ?特殊描述。
成員變量和靜態變量的區別:
?? 1、成員變量所屬于對象。所以也稱為實例變量。
????? 靜態變量所屬于類。所以也稱為類變量。
?? 2、成員變量存在于堆內存中。
????? 靜態變量存在于方法區中。
?? 3、成員變量隨著對象創建而存在。隨著對象被回收而消失。
????? 靜態變量隨著類的加載而存在。隨著類的消失而消失。
?? 4、成員變量只能被對象所調用?。
????? 靜態變量可以被對象調用,也可以被類名調用。
?? 所以,成員變量可以稱為對象的特有數據,靜態變量稱為對象的共享數據。
成員分兩種:
?? 1、成員變量。(數據共享時靜態化)
????? 該成員變量的數據是否是所有對象都一樣:
????? 如果是,那么該變量需要被靜態修飾,因為是共享的數據。?
????? 如果不是,那么就說這是對象的特有數據,要存儲到對象中。?
?? 2、成員函數。(方法中沒有調用特有數據時就定義成靜態)
????? 如果判斷成員函數是否需要被靜態修飾呢?
????? 只要參考,該函數內是否訪問了對象中的特有數據:
????? 如果有訪問特有數據,那方法不能被靜態修飾。
????? 如果沒有訪問過特有數據,那么這個方法需要被靜態修飾。