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