java關鍵字static淺談

經過一段時間的學習,對於java中的static關鍵字進行了一些簡單的總結,歡迎廣大學友補充,一起交流學習

  1. static關鍵字 靜態方法,不動用不會佔用cpu和空間 不是抽象,不能被重載 static{}類加載就執行一次
    不用初始化類就能訪問static變量 一個靜態變量就是一個類,不需要通過對象引用來調用,可以直接通過類名來訪問
    抽象方法不能用static 抽象方法無法直接訪問成員方法和成員變量 涉及堆和棧的先後問題
    先進後出原則,使用static,只要加載類就會調用static關鍵字,就會直接進入方法堆中,並且形成一個方法棧 不用依賴任何對象
    對於static方法沒有this的(this表示的是當前對象)
    靜態方法中不能直接訪問非靜態成員方法和非靜態成員變量,但是非靜態成員方法可以訪問靜態成員的方法和變量
    用static修飾變量:靜態變量被所有對象共享,在內存中只有一個副本,僅在類初始化時被加載
    而非靜態變量是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。
    static成員變量的初始化順序按照定義的順序進行初始化。
    static用來形成靜態代碼塊以優化程序性能。(只會在類被初次加載的時候執行一次。)
    static塊可以置於類中的任何地方,類中可以有多個static塊。在類初次被加載的時候,會按照static塊的順序來依次執行每個static塊,並且只會執行一次。
    在C/C++中static關鍵字是可以作用於局部變量的,但是在Java中是不允許使用static修飾局部變量的。這是Java語法的規定。
    靜態成員變量雖然獨立於對象,但是不代表不可以通過對象去訪問 所有的靜態方法和靜態變量都可以通過對象訪問(只要權限足夠)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章