java 存儲

1. 寄存器

這是最快的存儲區,由於它位於不一樣於其餘存儲區的地方——處理器內部。可是寄存器的數量極其有限,因此寄存器由編譯器根據需求進行分配。你不能直接控制,也不能在程序中感受到寄存器存在的任何跡象。app

2. 棧(stack)

位於通用RAM中, 存放基本類型的變量數據和對象的引用,但對象自己不存放在棧中,而是存放在堆(new 出來的對象)或者常量池中(字符串常量對象存放在常量池中)測試

3. 堆(heap)

存放全部new出來的對象code

4. 靜態存儲(static storage)

存放靜態成員(static定義的)對象

5. 常數存儲(constant storage)

存放字符串常量和基本類型常量(public static final)內存

6. 非 RAM 存儲。

若是數據徹底存活於程序以外,那麼它能夠不受程序的任何控制,在程序沒有運行時也能夠存在。字符串

測試

public static void main(String[] args) {
        // 建立了1個string對象。"apple"存儲在字符串常量池中 , str1 和str2存儲於棧中
         String str1 = "apple" ; 
         String str2 = "apple" ; 
         System.out.println(str1==str2);//true
         // 建立了2個string對象,對象存儲在堆內存中, 引用存於棧中 
         String str3 = new String("orange" ); 
         String str4 = new String("orange" ); 
         System.out.println(str3==str4);//false . 
         
         //建立了2個對象。兩個1對象存儲在堆內存中 
         Integer l1 = new Integer(1); 
         Integer k1 = new Integer(1); 
         System.out.println(l1==k1);//false . 
         
         // 如下兩條語句建立了2個對象。i1,i2變量存儲在棧內存中,兩個256對象存儲在堆內存中 
         Integer i1 = 256; 
         Integer i2 = 256; 
         System.out.println(i1==i2);//false 
         
    }
相關文章
相關標籤/搜索