㈠ java中靜態變數和靜態方法分別有什麼特
靜態變數
可以將靜態變數理解為類變數(與對象無關),而實例變數則屬於一個特定的對象。
靜態變數有兩種情況:
靜態變數是基本數據類型,這種情況下在類的外部不必創建該類的實例就可以直接使用
靜態變數是一個引用。這種情況比較特殊,主要問題是由於靜態變數是一個對象的引用,那麼必須初始化這個對象之後才能將引用指向它。因此如果要把一個引用定義成static的,就必須在定義的時候就對其對象進行初始化。
靜態方法
與類變數不同,方法(靜態方法與實例方法)在內存中只有一份,無論該類有多少個實例,都共用一個方法。
靜態方法與實例方法的不同主要有:
靜態方法可以直接使用,而實例方法必須在類實例化之後通過對象來調用。
在外部調用靜態方法時,可以使用「類名.方法名」或者「對象名.方法名」的形式。實例方法只能使用後面這種方式。
靜態方法只允許訪問靜態成員。而實例方法中可以訪問靜態成員和實例成員。
靜態方法中不能使用this(因為this是與實例相關的)。
㈡ java 靜態變數和靜態常量
靜態變數是屬於靜態存儲方式,但是屬於靜態存儲方式的量不一定就是靜態變數,例如外部變數雖屬於靜態存儲方式,但不一定是靜態變數,必須由static加以定義後才能成為靜態外部變數,或稱靜態全局變數。
對於自動變數,它屬於動態存儲方式。但是也可以用static定義它為靜態自動變數,或稱靜態局部變數,從而成為靜態存儲方式。由此看來,一個變數可由static進行再說明,並改變其原有的存儲方式。
而在以Pascal為代表的許多程序語言中,所有局部變數都由系統自動分配存儲空間,而所有全局變數的存儲空間則以靜態分配的方式獲取,因此由於實際上「局部變數」和「全局變數」這兩個術語已足以涵蓋所有的情況,在這些程序語言中通常不使用「靜態變數」這一術語,而直接以「全局變數」代之。
在這些程序語言中,靜態變數就是全局變數,而即使在有明確區分全局和靜態變數的程序語言中,在編譯後的代碼里二者也以相同的方式獲取存儲空間。而今術語「靜態變數」的概念則主要基於C族語言的「static」的定義。
靜態變數也可以用於存儲常數。具體來說,靜態變數可用const,constant或final等關鍵字標識,這時其值就會在編譯時設定,並且無法在運行時改變。編譯器通常將靜態常量與文本一起置於目標文件的文本區域,而非常量初始化數據則置於數據區
㈢ java靜態類變數問題
在構造子類對象的時候會調用父類的無參構造函數..
因此
ch1=new Child();時會調用父類的的無參構造函數
public Parent() {
counter++;
this.id=counter;
this.name="Unknow";
}
counter進行了加一操作變成了1
ch2=new Child(ch1);時先調用父類無參構造函數
counter又進行了一次加一操作變成了2
然後執行Child(child ch)構造函數本身的內容.
public Child(Child ch) {
counter++;
this.id=counter;
}
此時counter再次加一就成了為3..此時的ch2的id被賦予當前counter的值即3
因此結果是
there're 3 Person
ch2.id=3
㈣ java中為什麼每個類都有靜態變數class
Java所有的類(自定義和已定義的)都繼承了Object類
也就是說Object類是所有類的基類(父類)
Object類中定義了這個靜態變數;其子類也繼承了這個靜態變數
所有的類都能通過.class得到類名信息
㈤ java中成員變數和靜態變數的區別是什麼
JAVA成員變數和靜態變數的區別:
1,成員變數所屬於對象。所以也稱為實例變數。
靜態變數所屬於類。所以也稱為類變數。
2,成員變數存在於堆內存中。
靜態變數存在於方法區中。
3,成員變數隨著對象創建而存在。隨著對象被回收而消失。
靜態變數隨著類的載入而存在。隨著類的消失而消失。
4,成員變數只能被對象所調用
。
靜態變數可以被對象調用,也可以被類名調用。
所以,成員變數可以稱為對象的特有數據,靜態變數稱為對象的共享數據。
㈥ java 類變數 靜態變數
publicclassDemo
{
privateinta;//實例變數
privatestaticinta;//靜態變數(也叫類變數)
publicvoidfun1(){
//這個是實例方法
}
publicvoidstaticfun2(){
//這個是靜態方法(類方法)
}
}
publicstaticvoidmain(String[]args){
//這里調用實例方法
Demodemo=newDemo();
demo.fun1();
//這里調用靜態方法
Demo.fun2();
}
㈦ 在java語言中,靜態變數和普通變數有什麼區別
靜態變數是從屬於類的,在java虛擬機載入的時候就會在內存中載入這個變數,可以用類直接調用。
而普通的變數是從屬於對象的,只有用對象來使用