java 静态成员不能调用 非静态成员_为什么静态成员不能访问非静态成员
首先static的成員是在類加載的時候初始化的,JVM的CLASSLOADER的加載,首次主動使用加載,而非static的成員是在創建對象的時候,即new 操作的時候才初始化的;
先后順序是先加載,才能初始化,那么加載的時候初始化static的成員,此時非static的成員還沒有被加載必然不能使用,而非static的成員是在類加載之后,通過new操作符創建對象的時候初始化,此時static 已經分配內存空間,所以可以訪問!
簡單點說:靜態成員屬于類,不需要生成對象就存在了.而非靜態需要生成對象才產生. 所以靜態成員不能直接訪問.? ???? 下面說說靜態的特點:
1.隨著類的加載而加載 也就是,說靜態會隨著類的消失而消失,說明靜態的生命周期最長 2.優先于對象的存在 明確一點:靜態是先存在的對象是后存在的 3.被所有對象共享 4.可以直接被類名多調用
實例變量和類變量的區別 1.存放位置 類變量隨著類的加載存在于方法區中,實例變量隨著對象的對象的建立存在于堆內存里 2.生命周期 類變量生命周期最長,隨著“類”的加載而加載,隨著類的消失而消失 實例變量隨著“對象”的消失而消失
靜態的使用注意事項: 1.靜態方法只能訪問靜態成員(包括成員變量和成員方法) ?? 非靜態方法可以訪問靜態也可以訪問非靜態 2.靜態方法中不可以定義this,super關鍵字 ?? 因為靜態優先于對象存在,所以靜態方法中不可以出現this,super關鍵字 3.主函數是靜態的。 ??? ?? 靜態的利弊 ?? 利:對 對象的共享數據進行單獨空間的存儲,節省空間,沒有必要沒一個對象中都存儲一份 ?? 可以直接被類名所調用 ?? 弊:生命周期過長,訪問出現局限性(只能訪問靜態)
總結
以上是生活随笔為你收集整理的java 静态成员不能调用 非静态成员_为什么静态成员不能访问非静态成员的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java hashtable 数据结构_
- 下一篇: java win7 jdk_WIN7下配