關於String在記憶體中的存放

2021-08-31 12:26:30 字數 676 閱讀 8378

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 暫存器區 用...