首頁  >  文章  >  Java  >  Java中static與非static差異的簡單介紹

Java中static與非static差異的簡單介紹

黄舟
黄舟原創
2017-10-10 10:22:291500瀏覽

這篇文章主要介紹了Java中static和非static的相關內容,小編覺得還是很不錯的,這裡分享給大家,需要的朋友可以參考下。

關於static和非static變數的差異

#1. static 修飾的變數稱為類別變數或全域變數或成員變量,在類別中載入的時候成員變數即被初始化,與類別關聯,只要類別存在,static變數就存在。非static修飾的成員變數是在物件new出來的時候劃分儲存空間,是與具體的物件綁定的,該成員變數僅為當前物件所擁有的。

2. static修飾的變數在載入的時候先於main方法載入在記憶體中的資料共享區-------方法區,而非static的變數在載入的時候,是要建立變數才載入在堆記憶體中的。

3. 一個static變數單獨劃分一塊儲存空間,不與特定的物件綁定在一起,該儲存空間被類別的各個物件共享。 static變數值在方法區載入一次,而非static在建立物件時會載入很多次。每次創建都會拷貝一份。

4. 物件在引用成員變數是直接透過類別名稱.變數名稱調用,物件在引用實例變數時只能透過物件名稱.變數名調用。

5. 在類別中調用成員變數時直接調用或以類別名稱.變數名稱方式調用,實例變數則用this或直接呼叫。

關於static方法和非static方法的差異

1. static修飾的方法也和static相同。先於main方法被載入到方法區,以便共享使用。

2. 靜態的static方法中不能使用this或super關鍵字,因為static方法是先於物件建立之前就已經載入的方法,是屬於類別的方法,而this和super指向的是本類別的對像或是父類別的對象,非靜態的方法是屬於對象的,方法裡可以用this和super。

3. static方法可以用物件.方法名來調用,也可以用類別名稱.方法名稱來調用。而非靜態的方法只能建立物件後時呼叫。

4. static方法是載入一次,被所有的物件共用。而非靜態方法是有多少個物件就拷貝多少次,每個物件只能呼叫自己的拷貝的方法。

5. 當物件呼叫非靜態的方法時,不考慮執行緒安全性的問題,而呼叫靜態方法時,要考慮安全性的問題。因為靜態方法只有一份。而物件的方法是自己有自己的。

6. 在同一個類別中,靜態方法中只能存取類別中的靜態成員。而非靜態方法可以存取非靜態的方法(使用類別名稱調用,或創創建本類別的物件調用)。

總結

#

以上是Java中static與非static差異的簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn