非静态内部类中为什么不能拥有静态成员?
生活随笔
收集整理的這篇文章主要介紹了
非静态内部类中为什么不能拥有静态成员?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
答案來自:https://zhidao.baidu.com/question/534600874.html,其實我是草草啦 的回答。
?
java類加載順序,首先加載類,執行static變量初始化,接下來執行對象的創建,如果我們要執行代碼中的變量int a 初始化,那么必須先執行加載外部類,再加載內部類,最后初始化靜態變量 a ,問題就出在加載內部類上面,我們可以把內部類看成外部類的非靜態成員,它的初始化必須在外部類對象創建后以后進行,要加載內部類必須在實例化外部類之后完成 ,java虛擬機要求所有的靜態變量必須在對象創建之前完成,這樣便產生了矛盾。
而java常量放在內存中常量池,它的機制與變量是不同的,編譯時,加載常量是不需要加載類的,所以就沒有上面那種矛盾。
其實常量使用是很隨意的,內部類,靜態內部類,匿名內部類就亂了。
但了解JVM特性你就知道有些地方為什么不讓你這么用了。
總結
以上是生活随笔為你收集整理的非静态内部类中为什么不能拥有静态成员?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: main方法一定要放在public类当中
- 下一篇: java中的static方法可以被重写吗