詳談Java靜態(tài)動態(tài)的問題
Cannot make a static reference to the non-static field
靜態(tài)方法中不能引用非靜態(tài)成員變量及方法
class A {
private int a = 1;
public sttaic void main(String[] args){
System.out.println(a);
}
}
因為實例變量應該是具體對象的狀態(tài),應該先A a = new A();然后System.out.println(a,a);
或者將變量改為static
No enclosing instance of type EventApp4 is accessible. Must qualify the allocation with an enclosing instance of type EventApp4 (e.g. x.new A() where x is an instance of EventApp4).
原因:內(nèi)部類沒有用static限定,所以是動態(tài)的,而我在main函數(shù)中new了這個內(nèi)部類。為什么這樣就出現(xiàn)問題了呢,因為靜態(tài)的方法以及變量在類加載之時就已經(jīng)進入內(nèi)存了,但是非靜態(tài)的方法和變量只能在實例化之后才會進入內(nèi)存,所以在靜態(tài)方法中new非靜態(tài)的內(nèi)部類就會出錯,因為此時這個內(nèi)部類還不存在呢。反之,在動態(tài)方法中new靜態(tài)方法是不會出現(xiàn)錯誤的,原因同樣,靜態(tài)的在非靜態(tài)的之前就已經(jīng)存在了。
從java的內(nèi)存機制去分析,首先當你New 一個對象的時候,并不是先在堆中為對象開辟內(nèi)存空間,而是先將類中的靜態(tài)方法(帶有static修飾的靜態(tài)函數(shù))的代碼加載到一個叫做方法區(qū)的地方,然后再在堆內(nèi)存中創(chuàng)建對象。所以說靜態(tài)方法會隨著類的加載而被加載。當你new一個對象時,該對象存在于對內(nèi)存中,this關鍵字一般指該對象,但是如果沒有new對象,而是通過類名調(diào)用該類的靜態(tài)方法也可以。
遇到遇上問題時,有以下原則
1.在main中,使用靜態(tài)方法靜態(tài)變量靜態(tài)類,即將變量、方法都限定為static
2.在main中,實例化本類或其他類(要使用的類)
3.將main中的語句放進構造函數(shù)中,在main中實例化本類,因為構造函數(shù)中可以使用本類的引用this
以上這篇詳談Java靜態(tài)動態(tài)的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Java中的動態(tài)和靜態(tài)編譯實例詳解
- Java靜態(tài)代理和動態(tài)代理總結
- Java 靜態(tài)綁定與動態(tài)綁定深入分析
- Java反射之靜態(tài)加載和動態(tài)加載的簡單實例
- java 反射 動態(tài)調(diào)用不同類的靜態(tài)方法(推薦)
- 理解Java中的靜態(tài)綁定和動態(tài)綁定
- Java中的靜態(tài)綁定和動態(tài)綁定詳細介紹
- 使用java將動態(tài)網(wǎng)頁生成靜態(tài)網(wǎng)頁示例
- 深入解析java中的靜態(tài)代理與動態(tài)代理
- java 靜態(tài)代理 動態(tài)代理深入學習
相關文章
java計算自然數(shù)中的水仙花數(shù)的方法分享
這篇文章主要介紹了java計算自然數(shù)中的水仙花數(shù)的方法,需要的朋友可以參考下2014-03-03
IDEA新建bootstrap.yml文件不顯示葉子圖標的問題
這篇文章主要介紹了IDEA新建bootstrap.yml文件不顯示葉子圖標的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
Eclipse中創(chuàng)建Web項目最新方法(2023年)
在Java開發(fā)人員中,最常用的開發(fā)工具應該就是Eclipse,下面這篇文章主要給大家介紹了關于Eclipse中創(chuàng)建Web項目2023年最新的方法,需要的朋友可以參考下2023-09-09
SpringBoot中yml多環(huán)境配置的3種方法
這篇文章主要給大家介紹了SpringBoot中yml多環(huán)境配置的3種方法,文中有詳細的代碼示例供大家參考,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2023-10-10
JavaIO?BufferedReader和BufferedWriter使用及說明
這篇文章主要介紹了JavaIO?BufferedReader和BufferedWriter使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
使用Spring AntPathMatcher的doMatch方法
這篇文章主要介紹了使用Spring AntPathMatcher的doMatch方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

