文章出處
文章列表
棧:存放局部變量
堆:存放new出來的對象
方法區:存放類的信息,static變量,常量池(字符串常量) 在堆中,可以說是堆的一部分
創建了一個student類,定義了name屬性, id靜態變量 和一個study()方法
程序運行的時候 java虛擬機會通過類加載器 將類的信息加載到虛擬內存中 存放在方法區里
相當于一個類的模板 我們通過這個類的模板來創建對象,
這個其實很好理解 我們沒有定義類 類加載器加載不到類的信息 不能將這個對象實例化
更直白一點,如果憑空new一個對象 編譯的時候就會報錯 person無法作為一個類 會提示你創建一個person類
靜態變量 在加載類信息的時候就已經加載到內存中 存放在方法區里 靜態變量或方法屬于類,不需要new對象 就可以通過類名直接調用
在main方法中 new一個學生對象 stu1
java虛擬機就會在棧中 根據類的模板 加載出一個類信息 stu1 類中方法實現是固定的,java給每一個方法都分配了一個地址,需要使用方法的時候
底層引用的是這個方法的地址,而不是每new一個對象就加載一次方法體
stu1屬于一個局部變量 存放在堆中
在棧里的信息都有一個地址 通過這個地址來引用使用它們 在java中有關于對象的操作 其實就操作它們的地址
文章列表
全站熱搜