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