關於static和非static變數的區別。
static 修飾的變數稱為類變數或全域性變數或成員變數,在類被載入的時候成員變數即被初始化,與類關聯,只要類存在,static變數就存在。非static修飾的成員變數是在物件new出來的時候劃分儲存空間,是與具體的物件繫結的,該成員變數僅為當前物件所擁有的。
static修飾的變數在載入的時候先於main方法載入在記憶體中的資料共享區-------方法區,而非static的變數在載入的時候,是要建立變數才載入在堆記憶體中的。
乙個static變數單獨劃分一塊儲存空間,不與具體的物件繫結在一起,該儲存空間被類的各個物件所共享。static變數值在方法區載入一次,而非static在建立物件時會載入很多次。每次建立都會拷貝乙份。
物件在引用成員變數是直接通過類名.變數名呼叫,物件在引用例項變數時只能通過物件名.變數名呼叫。
在類中呼叫成員變數時直接呼叫或者以類名.變數名方式呼叫,例項變數則用this或者直接呼叫。
關於static方法和非static方法的區別
static修飾的方法也和static一樣。先於main方法被載入到方法區,以便共享使用。
靜態的static方法中不能使用this或者super關鍵字,因為static方法是先於物件建立之前就已經載入的方法,是屬於類的方法,而this和super指向的是本類的物件或者父類的物件,非靜態的方法是屬於物件的,方法裡可以用this和super。
static方法可以用物件.方法名來呼叫,也可以用類名.方法名來呼叫。而非靜態的方法只能建立物件後時呼叫。
static方法是載入一次,被所有的物件所共享。而非靜態方法是有多少個物件就拷貝多少次,每個物件只能呼叫自己的拷貝的方法。
物件呼叫非靜態的方法時,不考慮執行緒安全性的問題,而呼叫靜態方法時,要考慮安全性的問題。因為靜態方法只有乙份。而物件的方法是自己有自己的。
同乙個類中,靜態方法中只能訪問類中的靜態成員。而非靜態方法可以訪問非靜態的方法(使用類名呼叫,或者創建立本類的物件呼叫)。
static與非static的區別
關於static和非static變數的區別。1.static 修飾的變數稱為類變數或全域性變數或成員變數,在類被載入的時候成員變數即被初始化,與類關聯,只要類存在,static變數就存在。非static修飾的成員變數是在物件new出來的時候劃分儲存空間,是與具體的物件繫結的,該成員變數僅為當前物件所...
Java學習筆記之static與this
package com.classtest import static package battery.直接匯入靜態類 呼叫靜態方法可以可以直接使用 不常用 1 靜態成員變數 屬於類的 屬於所有物件的全域性變數 2 靜態成員方法 屬於類的 屬於所有物件的全域性方法 3 靜態的只能呼叫靜態的 通過物件...
static 與非static修飾的區別
請簡述static 與非static修飾的區別 作用在方法上,方法的區別 static方法屬於類,不屬於類的例項物件,而非static方法屬於類的例項物件,不屬於類,static方法不需要例項物件就可以通過類名呼叫,且static方法中不能有例項成員 即例項方法或例項變數 而非static方法中可以...