先上下內存圖
棧:保存局部變量的值,包括:1.用來保存基本數據類型的值;2.保存類的實例,即堆區對象的引用(指針)。也可以用來保存加載方法時的幀。
例如字符串 String s=new String("hello");
其中的String s存在桟中,而new String("hello");存在堆中,桟中的s存的是堆中的內存地址。
堆:用來存放動態產生的數據,比如new出來的對象。注意創建出來的對象只包含屬於各自的成員變量,並不包括成員方法。因爲同一個類的對象擁有各自的成員變量,存儲在各自的堆中,但是他們共享該類的方法,並不是每創建一個對象就把成員方法複製一次。