『壹』 java 在調試的時候如何查看類中的靜態變數值
以下是示例代碼:
『貳』 java 類變數 靜態變數
publicclassDemo
{
privateinta;//實例變數
privatestaticinta;//靜態變數(也叫類變數)
publicvoidfun1(){
//這個是實例方法
}
publicvoidstaticfun2(){
//這個是靜態方法(類方法)
}
}
publicstaticvoidmain(String[]args){
//這里調用實例方法
Demodemo=newDemo();
demo.fun1();
//這里調用靜態方法
Demo.fun2();
}
『叄』 java 靜態變數和靜態常量
這個涉及到JAVA的內存機制,我也是不是很精通,就簡單說一下在下的想法:
Java文件在專編譯屬期被Java編譯器編譯誠.class文件,在伺服器啟動時,伺服器需要用到的.class文件會被Java類型載入器載入進Java虛擬機的內存,在Java虛擬機內存的方法區存儲虛擬機載入的類信息、常量、靜態變數、即時編譯器編譯後的代碼等數據。在方法區中存在一個叫運行時常量池的區域,它主要用於存放編譯器生成的各種字面量和符號引用。
這里值得注意的是方法區只是存儲內存中的虛擬機載入的類信息。
靜態常量在編譯期被初始化和分配內存,也就是說靜態常量在編譯就已經實例化了。而靜態變數在類載入過程中的准備階段分配內存,在初始化階段賦值。
回收時機:類被卸載時,靜態變數被銷毀,並釋放內存空間。static變數的生命周期取決於類的生命周期
這是我個人的理解和分析,歡迎各位指出其中的錯誤。
『肆』 JAVA中靜態變數和實例變數的區別
Java類的抄成員變數有2種:一種是被static關鍵字修飾的變數,叫類變數或者靜態變數;另一種沒有static修飾,為實例變數。
在語法定義上的區別:靜態變數前要加static關鍵字,而實例變數前則不加。
在程序運行時的區別:實例變數屬於某個對象的屬性,必須創建了實例對象,其中的實例變數才會被分配空間,才能使用這個實例變數。靜態變數不屬於某個實例對象,而是屬於類,所以也稱為類變數,只要程序載入了類的位元組碼,不用創建任何實例對象,靜態變數就會被分配空間,靜態變數就可以被使用了。總之,實例變數必須創建對象後才可以通過這個對象來使用,靜態變數則可以直接使用類名來引用。
類的靜態變數在內存中只有一個,java虛擬機在載入類的過程中為靜態變數分配內存,靜態變數位於方法區,被類的所有實例共享。靜態變數可以直接通過類名進行訪問,其生命周期取決於類的生命周期。
而實例變數取決於類的實例。每創建一個實例,java虛擬機就會為實例變數分配一次內存,實例變數位於堆區中,其生命周期取決於實例的生命周期。