stack segment、
heap segment、
code segment、
data segment)
區域性變數:如main函式中宣告的str變數。如圖中,str,t存在於stack區:
棧中儲存基本資料型別的變數和自定義的物件的引用(不是物件),物件本身都存放在堆區中,被執行的方法的也是pull到棧中,當方法執行完後再push出棧。
當new 乙個物件的時候,此物件放在了heap segment(堆)當中。t存放在stack中,而new test()這個實實在在的物件是存在了heap中
如。**:
heap中儲存的全部是物件,每個物件都包含乙個與之對應的class的資訊。(class的目的是得到操作指令)
類中方法的話,是存在在 code segment(**區)中了
static 的變數或者字串常量存在資料區
static的變數與非static變數存放位置不一樣,並且變數的訪問許可權也不一樣。
static變數是全域性的,是類的所有物件都能訪問的,是所有方法都可以訪問的,無論是static修飾的方法還是非static方法都可以訪問,沒有限制。
而非static變數是私有的,是有訪問限制的,就是說是每個物件獨有的特有的,並且只有非static方法才可以訪問。
如圖:
static方法只能訪問static的變數,沒有許可權訪問非static變數。
static方法中宣告的變數可以與非static變數並且是類的屬性重名
方法中宣告的變數可以與非static變數並且是類的屬性重名
這是由於類的屬性是存在與物件中的,是在heap中,而方法中的變數是存在與code 區中的,在不同的區中可以重名。非static方法中可以方訪問static變數。
這時因為static變數是共享的,任何方法,任何物件都可以訪問static方法可以訪問static屬性
static方法中宣告的變數name存在code區,而類的屬性中的name存在物件中,而物件存在於heap區。所以不會報錯。
ORACLE相關內容
1 em,dbca,netca,netmgr出現亂碼方案 cd oracle home jre lib mv font.properties font.properties.bak mv font.properties.zh font.properties em,dbca,netca,netmgr詳...
JVM相關內容
本地 native code 每個因素對記憶體占用的影響又會隨著應用程式 執行環境和系統平台的不同而變化,那怎樣計算總的記憶體佔用量?是的,想得到乙個準確的數字不是那麼容易,因為 你很難控制本地 native 部分。你能控制的部分只有堆大小 xmx,類占用的記憶體 xx maxpermsize,還有...
指標相關內容
1.指標是變數,佔4位元組,存放的是位址 2.指標型別與零值比較 if n null 或者if n null 3.野指標 int p 空指標 int p null 避免野指標 以char型別為例 char p char mallloc sizeof char 10 要包含標頭檔案 include 使...