亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳談Java靜態(tài)動態(tài)的問題

 更新時間:2017年09月18日 10:00:47   投稿:jingxian  
下面小編就為大家?guī)硪黄斦凧ava靜態(tài)動態(tài)的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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);
  }
}

因為實例變量應(yīng)該是具體對象的狀態(tài),應(yīng)該先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)進(jìn)入內(nèi)存了,但是非靜態(tài)的方法和變量只能在實例化之后才會進(jìn)入內(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)存機制去分析,首先當(dāng)你New 一個對象的時候,并不是先在堆中為對象開辟內(nèi)存空間,而是先將類中的靜態(tài)方法(帶有static修飾的靜態(tài)函數(shù))的代碼加載到一個叫做方法區(qū)的地方,然后再在堆內(nèi)存中創(chuàng)建對象。所以說靜態(tài)方法會隨著類的加載而被加載。當(dāng)你new一個對象時,該對象存在于對內(nèi)存中,this關(guān)鍵字一般指該對象,但是如果沒有new對象,而是通過類名調(diào)用該類的靜態(tài)方法也可以。

遇到遇上問題時,有以下原則

1.在main中,使用靜態(tài)方法靜態(tài)變量靜態(tài)類,即將變量、方法都限定為static

2.在main中,實例化本類或其他類(要使用的類)

3.將main中的語句放進(jìn)構(gòu)造函數(shù)中,在main中實例化本類,因為構(gòu)造函數(shù)中可以使用本類的引用this

以上這篇詳談Java靜態(tài)動態(tài)的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論