首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 關鍵字 static 深度解析:靜態變量、方法、塊、內部類與導包

     編輯:Java 綜合教學

Java 關鍵字 static 深度解析

本文從五個維度剖析 static 用法:靜態成員變量、靜態方法、靜態塊、靜態內部類、靜態導包。

靜態 vs 非靜態對比

屬性靜態對象非靜態對象
歸屬類共同擁有各實例獨立擁有
內存分配固定區域,優先分配堆中隨實例分配
初始化順序優於非靜態次於靜態

1. 靜態變量、方法、塊

以 static 修飾,類名直接調用無需實例化。優點:全局唯一、引用便捷。限制:只能調用 static 方法、只能訪問 static 數據、不能使用 this/super。

public class StaticExercise {
    public static String sky = "jeyson";
    public static String getMySky(String sky) { return sky; }
    static {
        System.out.println("靜態塊執行");
        System.out.println(getMySky(sky));
    }
    // 測試略
}

2. 靜態內部類

適用於與外部類緊密關聯、僅在使用外部類時才需加載的場景。隨外部類加載而初始化,調用方式:OuterClass.InnerStatic.staticMember。

class StaticTest {
    public static String sms = "to my sky";
    static class InnerStatic {
        public static final String MYSKY = "MY FINAL SKY";
    }
}
// 調用:StaticTest.InnerStatic.MYSKY

3. 靜態導包

使用 import static pkg.Class.staticMember 將靜態成員直接引入當前命名空間,無需類名前綴。優點:代碼簡潔;缺點:降低可讀性,慎用。

import static com.generic.MyStaticImportTest.number;
import static com.generic.MyStaticImportTest.getMyWords;

public class StaticExercise {
    @Test public void testStatic3() {
        int myNumber = number;      // 直接使用
        getMyWords();               // 直接調用
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved