Java中的变量
java類的成員變量有兩種:一種是被static關(guān)鍵字修飾的變量,叫類變量或者靜態(tài)變量;另一種沒有static修飾,為實例變量。
在語法定義上的區(qū)別:靜態(tài)變量前要加static關(guān)鍵字,而實例變量前則不加。
在程序運行時的區(qū)別:實例變量屬于某個對象的屬性,必須創(chuàng)建了實例對象,其中的實例變量才會被分配空間,才能使用這個實例變量。靜態(tài)變量不屬于某個實例對象,而是屬于類,所以也稱為類變量,只要程序加載了類的字節(jié)碼,不用創(chuàng)建任何實例對象,靜態(tài)變量就會被分配空間,靜態(tài)變量就可以被使用了。總之,實例變量必須創(chuàng)建對象后才可以通過這個對象來使用,靜態(tài)變量則可以直接使用類名來引用。
從生存周期講,實例變量的生存周期從執(zhí)行new運算后創(chuàng)建對象開始存在,直到Java垃圾回收器銷毀這個對象結(jié)束,實例變量的生存周期與對象的生存周期一致;類變量的生存期從定義類開始存在,直到該類所在的程序停止執(zhí)行為止,很明顯類變量的生存周期要大于實例變量的生存周期。
成員變量和局部變量的區(qū)別:
作用域:成員變量的作用域比局部變量作用域大;
變量的初始值:成員變量可以顯式地賦值,也可以取該成員變量數(shù)據(jù)類型的默認(rèn)值。但局部變量必須顯式地賦值,如果一個變量未顯式地賦值,那么程序?qū)o法訪問該變量;
存儲位置:成員變量中的實例變量存儲在堆內(nèi)存中,結(jié)束時需要垃圾回收器回收空間,局部變量和類變量是存儲在棧內(nèi)存中的,無須垃圾回收器回收,隨著程序塊運行結(jié)束而結(jié)束。
變量使用注意:
- 在程序中能用局部變量實現(xiàn)的盡量不用成員變量實現(xiàn),盡可能的減小變量的生存期,以節(jié)省內(nèi)存開銷;
- 針對局部變量而言,在不影響功能的情形下,要盡可能的縮小變量的作用域。
總結(jié)
- 上一篇: 农村电费多少钱一度啊?
- 下一篇: 为什么Java中类方法不能访问实例方法