溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中的static有哪些特性

發布時間:2020-11-12 15:50:51 來源:億速云 閱讀:391 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關Java中的static有哪些特性,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

在了解某樣東西的時候我們通常會從它是什么,為什么,和怎么樣在三方面來衡量,對于java中的static,我們也這樣討論下,要明確以下幾點:

1、 static在java中到底代表什么,為何要用它?

2、 static在java中怎么用?

3、 static 有那些特點和使用的“局限”?

4、當成員變量被靜態修飾后,和非靜態成員變量的區別?

1、 static在java中到底代表什么,為何要用它?

static――靜態――“指定位置“

首先,我們來看看java的內存:java把內存分為棧內存和堆內存,棧內存用來存放一些基本類型的變量和數組及對象的引用變量,而堆內存主要是來放置對象的。

用 static的修飾的變量和方法,實際上是指定了這些變量和方法在內存中的“固定位置”-static storage。既然要有“固定位置”那么他們的 “大小”似乎就是固定的了,有了固定位置和固定大小的特征了,在棧中或堆中開辟空間那就是非常的方便了。如果靜態的變量或方法在不出其作用域的情況下,其引用句柄是不會發生改變的。

我們??吹剑簊tatic變量有點類似于C中的全局變量的概念;靜態表示的是內存的共享,就是它的每一個 實例都指向同一個內存地址。把static拿來,就是告訴JVM它是靜態的,它的引用(含間接引用)都是指向同一個位置,在那個地方,你把它改了,它就不會變成原樣,你把它清理了,它就不會回來了。

注:java的主類中main()方法本身就是一個static的,所以main方法的執行就是在沒有產生新的實例的情況。

2、 static在java中怎么用?

  • static是一個修飾符,用于修飾成員(成員變量和成員函數)。
  • 當成員被靜態修飾后,就多了一個調用方式,除了可以被對象調用外,還可以直接被類名調用:類名.靜態成員。

3、 static 有那些特點和使用的“局限”?

(一)特點

  • 靜態成員隨著類的加載而加載;
  • 靜態成員優先于對象存在;
  • 靜態成員被所有對象所共享;
  • 靜態成員多了一個中調用方式,可以被類名直接調用。

(二)利弊

利:

  • 對對象的共享數據進行單獨空間的存儲,節省空間,沒有必要每一個對象中都存儲一份;
  • 可以直接被類名調用。

弊:

  • 生命周期過長;
  • 訪問出現局限性,只能訪問靜態。

(三)注意事項

  • 靜態方法只能訪問靜態成員, 非靜態方法既可以訪問靜態又可以訪問非靜態;
  • 靜態方法中不可以定義this,super關鍵字;(因為this代表是對象,而靜態存在時,有可能沒有對象,且靜態優先于對象存在。所以靜態方法運行時,this是沒有任何對象代表的。 簡單說,先進內存的數據不可以訪問后進內存的數據,可是后進內存數據可以訪問先進內存的數據)
  • 主函數是靜態的

4、當成員變量被靜態修飾后,和非靜態成員變量的區別?

  • 靜態變量也稱為類變量,也就是直接可以被類名調用的變,這個變量是所屬于類的;非靜態變量稱為成員變量,或者實例變量,是被對象調用的,是所屬具體對象的。
  • 靜態變量隨著類的加載而加載,也意味著隨著類的消失而消失,生命周期最長;實例變量,隨著對象的創建而加載,隨著對象的消失而消失,按照對象的生命周期而存在。
  • 靜態變量存儲在方法區的靜態區中;實例變量存在于對象所屬的堆內存中。
  • 靜態變量數據,被所有對象所共享;實例變量是對象中的特有數據。

以上就是Java中的static有哪些特性,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女