java解釋靜態類

java 靜態類與普通類的區別

所謂靜態,指以static關鍵字修飾的,包括類,方法,塊,字段。

非靜態,指沒有用static 修飾的。

一、靜態類的特點

1.全局唯一,任何一次的修改都是全局性的影響

2.只加載一次,優先於非靜態

3.使用方式上不依賴於實例對象。

4.生命週期屬於類級別,從JVM 加載開始到JVM卸載結束。

二、靜態類和非靜態類之間的區別

  1. 內部靜態類不需要有指向外部類的引用。但非靜態內部類需要持有對外部類的引用
  2. 非靜態內部類能夠訪問外部類的靜態和非靜態成員。靜態類不能訪問外部類的非靜態成員。他只能訪問外部類的靜態成員
  3. 一個非靜態內部類不能脫離外部類實體被創建,一個非靜態內部類可以訪問外部類的數據和方法,因爲他就在外部類裏面
package com.example.mybatisplus.controller;

/**
 * @ClassName: OutClass
 */
public class OutClass {

    /**
     *  全局靜態變量
     */
    private static final String msg = "i love java";
     // 創建靜態類
    public static class staticInnerClass{
         public void showMsg() {
             System.out.println("靜態內部類展示信息:"+msg);
         }

    }
    // 創建非靜態內部類
    public class InnerClass{
        public void disPlayMsg() {
            System.out.println("非靜態內部類展示信息:"+msg);
        }
    }

    public static void main(String[] args) {
        // 創建靜態內部類實例
        staticInnerClass sic = new OutClass.staticInnerClass();
        sic.showMsg();

        // 創建非靜態內部類實例,需要先創建外部類的實例 OutClass().new
        InnerClass ic = new OutClass().new InnerClass();
        ic.disPlayMsg();

    }
}

 其實就是靜態類不用先創建外部類。可以靜態類看做外部類的靜態變量,使用就不要外部類實例;而非靜態就必須先實例化

延申:

靜態方法和實例方法最大的區別在於內存。
靜態方法在程序開始時生成內存,實例方法在程序運行中生成內存,
所以靜態方法可以直接調用,實例方法要先成生實例,通過實例調用方法,靜態速度很快,但是多了會佔內存。
任何語言都是對內存和磁盤的操作,至於是否面向對象,只是軟件層的問題,底層都是一樣的,只是實現方法不同。
靜態內存是連續的,因爲是在程序開始時就生成了,而實例申請的是離散的空間,所以當然沒有靜態方法快,
而且靜態內存是有限制的,太多了程序會啓動不了(極端情況)。

從性能上說,靜態方法效率要稍微高一些,但是它會常駐內存...
一些情況下使用靜態方法是有好處的,因爲對於靜態方法無論你有多少個實例,

內存中要維護的一份拷貝。同時,某些方法,確實使用靜態是比較恰當的..

 

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