java中靜態類與普通類之間區別


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

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

一、靜態類的特點

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

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

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

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

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

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

/**
 * @ClassName: OutClass
 * @Description:
 * @Author: xf
 * @Date: 19.6.27 10:59
 * @Version: 1.0
 */
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();

    }
}

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM