java 实例变量和类变量
???? 當(dāng)JAVA程序執(zhí)行時(shí),類的字節(jié)碼文件就被加載到內(nèi)存,如果該類沒(méi)有創(chuàng)建對(duì)象,類的實(shí)例成員變量不會(huì)被分配內(nèi)存,但是類中的類變量在類被加載到內(nèi)存的時(shí)候,就分配了相應(yīng)的內(nèi)存空間。如果該類創(chuàng)建對(duì)象,那么不同的實(shí)例變量互不相同,即分配不同的內(nèi)存空間,而類變量不再重新分配,所有的對(duì)象共享類變量,即所有的對(duì)象的類變量是相同的一處內(nèi)存空間,類變量的內(nèi)空空間至于什么時(shí)候釋放內(nèi)存空間,這是大家想知道的,那么我告訴大家,類變量的內(nèi)存空間直到程序退出運(yùn)行,才會(huì)釋放所占有的內(nèi)存。
???
?????? 其實(shí)說(shuō)到這里,我們應(yīng)該再隨便說(shuō)下類的方法,類的方法也分實(shí)例方法和類方法,那么有誰(shuí)能告訴我實(shí)例方法和類方法有什么區(qū)別么?
???
?????? 是這樣的,類的實(shí)例方法是在只有類創(chuàng)建對(duì)象的時(shí)候才會(huì)被分配入口地址,而類方法,是當(dāng)程序的字節(jié)碼文件加載到內(nèi)存就馬上分配入口地址,這就是為什么實(shí)例方法可以調(diào)用類方法,而類方法不能調(diào)用實(shí)例方法的原因,也是類方法為什么不可以操作實(shí)例變量而實(shí)例方法可以操作類變量的原因(想想誰(shuí)的入口地址先分配)。那么有人會(huì)問(wèn),當(dāng)我在創(chuàng)建一個(gè)對(duì)象的時(shí)候,實(shí)例方法和類方法是不是會(huì)被再次分配入口地址???java培訓(xùn)
????
??????? 其實(shí)不然,當(dāng)你再創(chuàng)建一個(gè)對(duì)象時(shí),實(shí)例方法是不會(huì)再分配入口地址的,也就是說(shuō),方法的入口地址是被所有對(duì)象共享的。類方法一開(kāi)始就分配了入口地址,也不會(huì)再分配入口地址。講到這里,也許有人還會(huì)問(wèn),那么方法的入口地址是什么時(shí)候才會(huì)被取消的呢?
???
??????? 是這樣的,類方法是直到程序退出運(yùn)行才會(huì)被取消入口地址,而實(shí)例方法就不一樣了,實(shí)例方法是當(dāng)所有對(duì)象都不存在的時(shí)候,入口地址才被取消。
轉(zhuǎn)載于:https://www.cnblogs.com/javaitpx/archive/2012/11/28/2792288.html
總結(jié)
以上是生活随笔為你收集整理的java 实例变量和类变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 用来做 favicon 的站点
- 下一篇: Getting Started with