首頁 > Java > java教程 > 詳細介紹Java中static的特點

詳細介紹Java中static的特點

黄舟
發布: 2017-03-24 10:32:03
原創
1431 人瀏覽過

本文主要介紹了Java中static的特點。具有很好的參考價值。下面跟著小編一起來看下吧

前兩天面試時被問到靜態的特點,當時回答地不是很好,現在來總結一下

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

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

2、 static在java怎麼用?

3、 static 有那些特色和使用的「限制」?

4、當成員變數被靜態修飾後,和非靜態成員變數的差別?

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

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

首先,我們來看看java的記憶體:java把記憶體分成堆疊記憶體和堆疊記憶體,堆疊記憶體用來存放一些基本型別的變數和陣列及物件的引用變量,而堆記憶體主要是來放置物件的。

用 static的修飾的變數和方法,實際上是指定了這些變數和方法在記憶體中的「固定位置」-static storage。既然要有「固定位置」那麼他們的 「大小」似乎就是固定的了,有了固定位置和固定大小的特徵了,在棧中或堆中開闢空間那就是非常的方便了。如果靜態的變數或方法在不出其作用域的情況下,其引用句柄是不會改變的。

我們常看到:static變數有點類似C中的全域變數的概念;靜態表示的是記憶體的共享,就是它的每一個 實例都指向同一個記憶體位址。把static拿來,就是告訴JVM它是靜態的,它的引用(含間接引用)都是指向同一個位置,在那個地方,你把它改了,它就不會變成原樣,你把它清理了,它就不會回來了。

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

2、 static在java怎麼用?

  • static是修飾符,用來修飾成員(成員變數和成員函數)。

  • 當成員被靜態修飾後,就多了一個呼叫方式,除了可以被物件呼叫外,還可以直接被類別名稱呼叫:類別名稱.靜態成員。

3、 static 有那些特點和使用的「限制」?

(一)特徵

  • #靜態成員隨著類別的載入而載入;

  • 靜態成員優先於物件存在;

  • 靜態成員被所有物件所共用;

  • 靜態成員多了一個中呼叫方式,可以被類別名稱直接呼叫。

(二)利弊

利:

  • ##對物件的共享資料進行單獨空間的存儲,節省空間,沒有必要每個物件中都儲存一份;

可以直接被類別名調用。

  • 弊:

  • #生命週期

    過長;

存取出現局限性,只能存取靜態。

(三)

主函數是靜態的

#########4、當成員變數被靜態修飾後,和非靜態成員變數的差異? ######
  • 靜態變數也稱為類別變量,也就是直接可以被類別名稱呼叫的變,這個變數是所屬於類別的;非靜態變數稱為成員變量,或是實例變量,是被對象所調用的,是所屬具體對象的。

  • 靜態變數隨著類別的載入而加載,也意味著隨著類別的消失而消失,生命週期最長;實例變量,隨著物件的創建而加載,隨著物件的消失而消失,依照物件的生命週期而存在。

  • 靜態變數儲存在方法區的靜態區中;實例變數存在於物件所屬的堆記憶體中。

  • 靜態變數數據,被所有物件所共享;實例變數是物件中的特有資料。

#

以上是詳細介紹Java中static的特點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板