static的相關內容

2021-08-21 22:40:31 字數 1850 閱讀 7353

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 使...