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