1. 程式人生 > >堆記憶體(heap)和棧記憶體(stack)區別

堆記憶體(heap)和棧記憶體(stack)區別

 結果為true 這就說明了a b其實指向同一個值注意,我們這裡並不用a.equals(b);的方式,因為這將比較兩個字串的值是否相等。==號,根據JDK的說明,只有在兩個引用都指向了同一個物件時才返回真值。而我們在這裡要看的是,a與b是否都指向了同一個物件。結果說明,JVM建立了兩個引用a和b,但只建立了一個物件,而且兩個引用都指向了這個物件。首先它會在棧中建立一個變數為a的引用,然後查詢棧中是否有abc這個值,如果沒找到,就將abc存放進來,然後將a指向abc。接著處理String b = "abc";在建立完b的引用變數後,因為在棧中已經有abc這個值,便將b直接指向abc。這樣,就出現了a與b同時指向abc