String建立方式及其區別

2021-10-03 22:29:39 字數 862 閱讀 5457

對於string的建立有兩種方式,一是直接賦值,二是使用構造方法將其實例化

一、直接賦值

string str = "jim";
執行這段**時,jvm會在常量池中開闢空間存放jim並讓str指向該空間;

string str = "jim";

string str1 = "jim";

system.out.println(str == str1);

輸出:true

說明二者指向同一處記憶體空間

執行第一行**時,jvm會在常量池中開闢空間存放jim並讓str指向該物件;

執行第二行**時,jvm會首先檢查常量池中是否已經存在一處內容為jim的空間。如果存在就讓str1指向該空間,否則在常量池中開闢乙個新的記憶體空間用於存放該字串

二、構造方法將其實例化

string str2 = new string("abc");

string str3 = new string("abc");

system.out.println(str2 == str3);

輸出:false

說明二者指向的不是同一處記憶體空間

執行前兩行**時,jvm會在堆中開闢兩個不同的空間用於存放str2和str3。採用這種方式每定義乙個string型別的變數,無論內容是否相同,都在棧中開闢空間儲存首位址,在堆中儲存數。

要輸出通過這種方式賦值的字串需要呼叫tostring方法

system.out.println(str2.tostring());
輸出:abc

所以兩種建立方式中第一種明顯節省記憶體空間

String建立方式及其區別

1.直接賦值法 string name1 jie 這種方法值並不會出現在堆中,而是直接出現在常量池中,而且在再進行直接賦值時string name2 jie 會先在常量池中尋找所賦的值是否已經存在,若存在則使變數指向值的位址,則name1於name2的位址會相同,若值不存在,則會在常量池中開闢新的空...

String建立方式及其區別

string name1 jim string name2 jim system.out.println name1 name2 輸出結果為true,比較的是位址上面為直接賦值,jim在常量池裡面,當定義name2時,先在常量池裡面找是否有jim,有的話則name1的位址直接給name2,他們兩個位...

執行緒及其建立的方式

執行緒主要發揮作用的時候 當乙個執行緒所執行的i o被阻塞的時候,同一程序中的其他執行緒可以使用cpu來進行計算。這樣,就提高了程式的執行效率。狀態 執行 就緒 等待被呼叫 阻塞 等待i o資源 兩種建立方法 繼承thread類,並override其中的run 方法 當乙個類沒有繼承其他類的時候,適...