String例項化物件

2021-10-01 07:06:02 字數 851 閱讀 9017

string類為引用資料型別,其實例化方式分為兩類:1.直接賦值。2.使用構造方法例項化物件。

1.直接賦值其基本語法為:【

public class jiestring }】

2.使用構造方法例項化物件其基本語法為:【

public class jiestring }】

但其兩種例項化方式有不同之處,直接賦值法中其值是儲存在乙個常量池的乙個空間中,其會出現常量池共享的情況,如上例name中儲存著"jie"的位址,如果再例項化乙個【string name1 = "jie";】則其在執行時會首先在常量池中尋找是否存在jie的乙個空間,如果存在,則name1直接指向儲存jie的空間,並且name1的位址與name的位址相同。如果不存在,則會在常量池中重新開闢乙個新的空間,然後name1指向該空間。如下圖:

對於引用資料型別"="是比較其位址的。

而對於構造方法例項化方式,每次都會建立乙個新的物件,物件是存在與堆中,對於例2,如再加上【string name1 = new string (「jie」);】name與name1的位址是不同的,

對於下圖:

因為直接賦值時,name1是"jie"的位址,"jie"在常量池中。而name的位址是"new string(「jie」)"的位址,在堆中,因此不相等。

物件例項化

參考資料 尚矽谷jvm教程 面試題 美團 物件在jvm中是怎麼儲存的?物件頭資訊裡面有哪些東西?螞蟻金服 j a物件頭有什麼?8.1.1 建立物件的方式 8.1.2.建立物件的步驟 public class objecttest 前面所述是從位元組碼角度看待物件的建立過程,現在從執行步驟的角度來分析...

String類物件的兩種例項化方式

幾乎所有專案開發之中一定會有string類的使用,但是string本身的定義是一些差別,以及在使用上是有一些注意事項 string類的兩種物件例項化模式 在之前曾經強調過,string可以直接採用賦值的形式進行處理,這一點感覺上和基本資料型別是非常像是的。範例 直接賦值例項化物件 public cl...

string 物件初始化

我在標頭檔案裡這樣宣告 wf error writelog log level mlevel,module code mmodule,string msg,string filename null,int line num 0 在windows下編譯 執行沒問題,但是linux下編譯可以通過,執行時...