靜態變量基礎

static優先於對象存在,因爲static的成員隨着類的加載就已經存在了。

靜態代碼塊:隨着類的加載而執行,優先級最高

 

內存分爲堆內存(存放new出來的對象),棧內存(存放局部變量),數據區(存放靜態變量和字符串常量),代碼區(存放JAVA中方法的代碼)。

 

37.在靜態方法裏面不能調用動態的方法   在類的構造方法裏面可以this調用方法,可以省略this

 

main方法是靜態方法,
靜態方法是不能調用非靜態方法。
因爲靜態方法是提前加載的。這個時候可能非靜態方法根本就還沒加載。所以,是不允許在靜態方法裏面調用非靜態方法的。(靜態方法變量優先與對象加載)                     

可以在靜態方法中,獲得非靜態方法所在的類的對象實例(new一個對象)。

在靜態方法中,用這個實例去調用非靜態方法。


靜態的是共享的(類名,對象名都可以調用) 非靜態的是特有的,靜態方法不再是針對於某個對象調用,所以不能訪問非靜態的成員

局部變量不能是靜態的,全局變量可以是靜態的(在外面定義)

局部變量前不能放置任何訪問修飾符 (private,public,和protected)。

 

靜態方法變量,不能使用this,super  (靜態變量優先於對象加載)


類有2種訪問控制權限: 公有的(可被所有類共享)  缺省的(可被當前包中的類訪問)

類中成員有4種訪問控制權限:

私有成員(private):該成員僅能被當前類的成員訪問。

沒有修飾符表示缺省權限(當前包可見):說明該成員能被當前類以及包中的其他類所訪問,稱在當前包可見

protected聲明保護成員:該成員能被當前類及其子類、或當前包中的其他類訪問,稱在子類中可見

public聲明公有成員:該成員可被所有類訪問

(在一個java文件裏面不能寫兩個public的class  只能寫一個  mian函數只能寫在public的class文件裏)




import java.util.ArrayList;
import java.util.List;

public class bb
{
    public TTT tt;
    
//    public bb bb1 ;
    
    public void getname(bb bb1)
    {
        bb1.setTt(tt);
    }
    
    public TTT getTt()
    {
        return tt;
    }
    
    public void setTt(TTT tt)
    {
        this.tt = tt;
    }
    
    public static void main(String[] args)
    {
        //  System.out.println(thi);
      //靜態方法不再是針對於某個對象調用,靜態變量屬於類,所以不能訪問非靜態成員(super,this代表當前對象)
      //靜態變量優先於對象存在  
      // bb1. 
      // System.out.println(super.getClass().getName());
        bb bb2 = new bb();
        bb2.getname(bb2);
       System.out.println(bb2.getClass()); 
        TTT tt = new TTT();
        String str[] = {};
        String s[] = new String[0];
        System.out.println(new String[0]);
    }
    
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章