Java之static靜態關鍵字詳解(轉載)

在這裏插入圖片描述

前言

在Java語言中,static表示“靜態”的意思,使用場景可以用來修飾成員變量和成員方法,當然也可以是靜態代碼塊。static的主要作用在於創建獨立於具體對象的域變量或者方法。本文主要來去講解一下static的來龍去脈。

static要解決什麼問題?

我們知道,當我們通過new關鍵字去創建對象的時候,那麼數據的存儲空間纔會被分配,類中的成員方法才能被對象所使用。但是呢有兩種特殊的情況:1、我們通過new關鍵字創建的對象共享同一個資源,而不是說每個對象都擁有自己的數據,或者說根本就不需要去創建對象,這個資源和對象之間是沒有關係的。2、希望某個方法不與包含它的類的任何對象聯繫在一起。總結下來就是說:即使沒有創建對象,也能使用屬性和調用方法,static目的就是在於解決這個問題。

格式

修飾變量:static 數據類型 變量名

修飾方法:【訪問權限修飾符】 static 方法返回值 方法名(參數列表)

特點

  1. static可以修飾變量,方法
  2. 被static修飾的變量或者方法是獨立於該類的任何對象,也就是說,這些變量和方法不屬於任何一個實例對象,而是被類的實例對象所共享。
  3. 在類被加載的時候,就會去加載被static修飾的部分。
  4. 被static修飾的變量或者方法是優先於對象存在的,也就是說當一個類加載完畢之後,即便沒有創建對象,也可以去訪問。

static靜態變量

被static修飾的成員變量叫做靜態變量,也叫做類變量,說明這個變量是屬於這個類的,而不是屬於是對象,沒有被static修飾的成員變量叫做實例變量,說明這個變量是屬於某個具體的對象的。

靜態變量和實例變量的區別

實例變量:每次創建對象,都會爲每個對象分配成員變量內存空間,實例變量是屬於實例對象的,在內存中,創建幾次對象,就有幾份成員變量

靜態變量:靜態變量由於不屬於任何實例對象,是屬於類的,所以在內存中只會有一份,在類的加載過程中,JVM爲靜態變量分配一次內存空間。

static靜態方法

被static修飾的方法也叫做靜態方法,因爲對於靜態方法來說是不屬於任何實例對象的,那麼就是說在靜態方法內部是不能使用this的,因爲既然不屬於任何對象,那麼就更談不上this了。

static應用場景

如果某個成員變量是被所有對象所共享的,那麼這個成員變量就應該定義爲靜態變量。

static如何訪問

靜態變量:

類名.靜態變量

對象.靜態變量(不推薦的)

靜態方法:

類名.靜態方法

對象.靜態方法(不推薦)

這裏呢就囉嗦一句,由於被static修飾的變量和方法是不屬於任何實例對象的,所以在這裏,強烈建議不要通過對象的方式去訪問靜態的變量或者方法。

static使用注意事項

  1. 在靜態方法中沒有this關鍵字
    因爲靜態是隨着類的加載而加載,而this是隨着對象的創建而存在的。靜態比對象優先存在。
  2. 靜態可以訪問靜態的,但是靜態不能訪問非靜態的。
  3. 非靜態的可以去訪問靜態的。

總結

  1. 靜態只能訪問靜態。
  2. 非靜態既可以訪問非靜態的,也可以訪問靜態的。

轉載:https://baijiahao.baidu.com/s?id=1601254463089390982&wfr=spider&for=pc

看到最後的幫忙點個👍🙏 謝謝!
在這裏插入圖片描述

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