棧:存放局部變量
堆:存放new出來的對象
方法區:存放類的資訊,static變量,常量池(字元串常量) 在堆中,可以說是堆的一部分

建立了一個student類,定義了name屬性, id靜态變量 和一個study()方法
程式運作的時候 java虛拟機會通過類加載器 将類的資訊加載到虛拟記憶體中 存放在方法區裡
相當于一個類的模闆 我們通過這個類的模闆來建立對象,
這個其實很好了解 我們沒有定義類 類加載器加載不到類的資訊 不能将這個對象執行個體化
更直白一點,如果憑空new一個對象 編譯的時候就會報錯 person無法作為一個類 會提示你建立一個person類
靜态變量 在加載類資訊的時候就已經加載到記憶體中 存放在方法區裡 靜态變量或方法屬于類,不需要new對象 就可以通過類名直接調用
在main方法中 new一個學生對象 stu1
java虛拟機就會在棧中 根據類的模闆 加載出一個類資訊 stu1 類中方法實作是固定的,java給每一個方法都配置設定了一個位址,需要使用方法的時候
底層引用的是這個方法的位址,而不是每new一個對象就加載一次方法體
stu1屬于一個局部變量 存放在堆中
在棧裡的資訊都有一個位址 通過這個位址來引用使用它們 在java中有關于對象的操作 其實就操作它們的位址