欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關于Java中static關鍵字的用法

 更新時間:2023年08月14日 10:09:29   作者:haihui_yang  
這篇文章主要介紹了關于Java中static關鍵字的用法,static:意為靜態(tài)的,在?Java?里面作為靜態(tài)修飾符,可以理解為全局的意思,static?不僅可以修飾成員變量,成員方法,還可以修飾代碼塊,需要的朋友可以參考下

static

static:意為靜態(tài)的;在 Java 里面作為靜態(tài)修飾符,可以理解為 “全局” 的意思,但是請注意:在 Java 中是沒有 “全局” 這一概念的。

static 不僅可以修飾成員變量,成員方法;還可以修飾代碼塊。

1、修飾成員變量

被 static 修飾的成員變量,在編譯時由內存分配一塊內存空間(只分配一塊,為所有該類的實例所共享),在程序結束時才會釋放(也就是說 GC 回收對象時不會釋放這一塊空間,因為它不屬于某個實例,它屬于 “大家” ),通過 className.varName 就可以訪問靜態(tài)成員變量(同一個類里的靜態(tài)方法可以直接通過 varName 使用)

需要注意的兩點:

  • 不能使用 this.staticVar 或者 this.staticMethod,因為 this 關鍵字指的是調用方法的對象的引用,而 staticVar 并不屬于某一個對象的引用!
  • 不能在方法體內部聲明靜態(tài)變量!

2、修飾成員方法

被 static 修飾的成員方法也是獨立于該類的任何對象,被該類的所有實例共享。也可以不用實例化對象,直接通過和 className.methodName 就可以訪問。static 方法不允許使用非靜態(tài)成員變量;當然,靜態(tài)方法可以通過對象引用獲取對象的實例化變量

public class ExampleForStatic{
	public static int staticField = 1;
	public int instanceField;
	public static void main(String[] args){
		// 通過 className.method 調用靜態(tài)方法
		System.out.println(ExampleForStatic.getStaticField());
		// 靜態(tài)方法可以通過對象引用獲取對象的實例化變量
    	ExampleForStatic instance = new ExampleForStatic();
    	instance.instanceField = 2;
	}
	public static int getStaticField(){
		// static int staticFieldInMethod; 錯誤,不能在方法體內部聲明靜態(tài)變量
		// 同一個類的靜態(tài)方法可以直接使用靜態(tài)變量
		return staticField;	
		// return this.staticField; 錯誤!不能使用 this 獲取靜態(tài)變量
	}
}

3、修飾代碼塊

被 static 修飾的代碼塊,會在類被初次加載的時候按照 static 塊的順序執(zhí)行一遍,僅僅只加載一次(可提高性能,將一些創(chuàng)建對象實例時耗費資源較多的類的實例化放在一個 static {} 中可以提高程序運行效率),一般用來初始化靜態(tài)變量和調用靜態(tài)方法。

(1)被 static 修飾的代碼是類初始化,剩下的代碼是實例初始化,類的初始化會在類被加載的時候按照定義的順序執(zhí)行,而實例初始化在對象建立實例的時候執(zhí)行,一個類最多被加載一次,即 static 修飾的代碼最多執(zhí)行一次,與建立對象的多少無關。

(2)在類第一次被加載時,首先會將所有的 static 域初始化為缺省值,然后再根據定義的順序來執(zhí)行賦值語句。

public class ExampleForStatic {
    private static String staticField;
    private String instanceField;
    static {
        staticField = "this is my first blog.";
        System.out.println(staticField);
    }
    {
        System.out.println("instance has been created.");
    }
    public static void main(String[] args) {
        DebugForStatic obj1 = new ExampleForStatic();
        DebugForStatic obj2 = new ExampleForStatic();
        DebugForStatic obj3 = new ExampleForStatic();
    }
}

輸出:

this is my first blog.
instance has been created.
instance has been created.
instance has been created.

4、static + final

類似于“全局常量”

對于變量,表示一旦給值便不可更改;

對于方法,表示不可覆蓋。

到此這篇關于關于Java中static關鍵字的用法的文章就介紹到這了,更多相關Java中static關鍵字內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • IDEA中springboot提示java:找不到符號符號:變量log問題

    IDEA中springboot提示java:找不到符號符號:變量log問題

    這篇文章主要介紹了IDEA中springboot提示java:找不到符號符號:變量log問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 淺談Java多進程程序的運行模式

    淺談Java多進程程序的運行模式

    這篇文章主要介紹了淺談Java多進程程序的運行模式,包括對進程阻塞問題的討論等,需要的朋友可以參考下
    2015-11-11
  • java中的實體類時間格式化

    java中的實體類時間格式化

    這篇文章主要介紹了java中的實體類時間格式化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • SpringBoot使用CommandLineRunner和ApplicationRunner執(zhí)行初始化業(yè)務方式

    SpringBoot使用CommandLineRunner和ApplicationRunner執(zhí)行初始化業(yè)務方式

    這篇文章主要介紹了SpringBoot使用CommandLineRunner和ApplicationRunner執(zhí)行初始化業(yè)務方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 史上最佳springboot Locale 國際化方案

    史上最佳springboot Locale 國際化方案

    今天給大家分享史上最佳springboot Locale 國際化方案,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-08-08
  • SpringBoot實現緩存組件配置動態(tài)切換的步驟詳解

    SpringBoot實現緩存組件配置動態(tài)切換的步驟詳解

    現在有多個springboot項目,但是不同的項目中使用的緩存組件是不一樣的,有的項目使用redis,有的項目使用ctgcache,現在需要用同一套代碼通過配置開關,在不同的項目中切換這兩種緩存,本文介紹了SpringBoot實現緩存組件配置動態(tài)切換的步驟,需要的朋友可以參考下
    2024-07-07
  • 關于ReentrantLock的實現原理解讀

    關于ReentrantLock的實現原理解讀

    這篇文章主要介紹了關于ReentrantLock的實現原理,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Spring的@Conditional詳解

    Spring的@Conditional詳解

    這篇文章主要介紹了Spring的@Conditional詳解,給想要注入Bean增加限制條件,只有滿足限制條件才會被構造并注入到Spring的IOC容器中,通常和@Bean注解一起使用,需要的朋友可以參考下
    2024-01-01
  • Java設計模式七大原則之里氏替換原則詳解

    Java設計模式七大原則之里氏替換原則詳解

    在面向對象的程序設計中,里氏替換原則(Liskov Substitution principle)是對子類型的特別定義。本文將為大家詳細介紹Java設計模式七大原則之一的里氏替換原則,需要的可以參考一下
    2022-02-02
  • 使用springboot防止反編譯proguard+xjar

    使用springboot防止反編譯proguard+xjar

    介紹了三種代碼混淆和加密工具的使用方法:ProGuard、Xjar和ClassFinal,ProGuard用于混淆Java字節(jié)碼,Xjar提供對JAR包內資源的加密和動態(tài)解密,而ClassFinal則支持直接加密JAR包或WAR包,通過預研和實際操作
    2024-11-11

最新評論