String類賦值的理解

2021-08-13 18:13:23 字數 617 閱讀 4840

string str = 「123」;

str = "abc";

怎麼理解以上**?

先看下下這個例子

int a = 5;

a = 4;

這段**的意思是,申請乙個記憶體單元,命名為a,同時把5存到記憶體單元,然後又把4存到記憶體單元內,也就是說現在名為a 的記憶體單元的內容在被重新賦值後修改了

string str = 「123」;

str = "abc";

這段**可以這樣理解:

string str = new string(「123」);

str = new string(「abc」);

首先申請乙個記憶體單元,把字串123存入記憶體單元,而str指向所申請的記憶體單元

再申請乙個記憶體空間,把字串abc存入記憶體單元,而str指向所申請的記憶體單元

所以對於引用來講,賦值並不是改變原引用物件的值,而只是調整了引用關係,原來的記憶體空間和值仍然存在

String類的理解

實際上string是在棧中引用string物件位址,string物件是引用byte 陣列位址 首先每次直接建立 字串都是在字串常量池開闢記憶體 其實也是new出來的,但是儲存機制不同 如果後續用到相同的字面值則直接使用相同位址。所以直接建立出來的 字串,只要字面值相同,則位址相同。其次 通過new出...

String類的2種賦值分析

1 字串常量池 2 string name new string 你好 3 string name 你好 分析物件在記憶體中的結構 常量池 用來儲存字串 你好 是常量 name 是變數 每當new乙個物件時,在堆中會生成乙個物件,棧中的指標指向堆中。你好是堆記憶體中儲存的值,會將 你好 這個字串到字...

String類的方法理解,

1.string 類的 indexof 方,如果查詢單個字元,如果字串有多個相同的字元只要找到第乙個就結束 2.1 當對字串進行修改的時候,需要使用 stringbuffer 和 stringbuilder 類。和 string 類不同的是,stringbuffer 和 stringbuilder ...