string s1 = "abc";
這個字串s1被賦予了值「abc」,首先,查詢stringpool中有沒有「abc」這個值,如果不存在,那麼就將其存進去,如果已經存在,那麼就會被s1所呼叫。
string s1 = "abc";
string s2 = "abc";
s1和s2所指向的物件是同乙個,以下**能夠看出來:
system.out.println(s1 == s2);
會列印出「true」。
如果是下面這個:
string s1 = "abc";
string s3 = new string("abc");
之間的區別就是,s3在建立物件的時候,會檢查stringpool中是否存在「abc」,前面s1已經加進去了,所以s3不會在stringpool中建立了,會在堆中建立乙個string物件,內容為「abc」,並返回給s3。
如果s1沒定義「abc」之前,s3也會先是在stringpool中建立「abc」,然後再在堆中建立乙個string物件,所以s1和s3不是乙個物件,用object的equals方法就可以看出來。
字串記憶體問題,基本就是這樣了。
關於陣列在記憶體中的存放形式
char a 3 3 sizeof a 結果是9 9這個結果一直認為是 理所當然 但是當自己實現乙個二維陣列時,最簡單的方式就是 char test char malloc sizeof char row size int i 0 for ichar malloc sizeof char col s...
bmp在記憶體中的存放
bmp 儲存影象 每張圖按大小來儲存,即影象的長寬畫素大小。如果一張的畫素是 240x320,則此影象在記憶體的存放是乙個 240x320的陣列,每個陣列的元素是int整形 整數占用4個byte 數位相機中所謂的支援500w畫素就是這個意思,代表它能處理多大的圖形色彩資訊的能力,畫素越高,需要處理時...
資料在記憶體中的存放
在計算機系統中,執行的應用程式的資料都是儲存在記憶體之中 不同型別的資料,儲存的記憶體區域不同,其中包括 1 棧區 stack 由編譯器自動分配並釋放,一般存放函式的引數值,區域性變數等 2 堆區 heap 由程式設計師分配和釋放,如果程式設計師不釋放,程式結束時,可能會由作業系統 3 暫存器區 用...