Java字串不同建立方式的理解

2021-07-11 06:13:31 字數 1085 閱讀 8265

建立字串的方式

1.string a = "12";

2.string a1 = "12"

3.string b = = new string("123")

4.string b1 = new string("123")

"12"建立物件情況(string常量池中同乙個字串只會建立一次)

1.如果在string常量池中已經存在"12",則直接指向常量池中的物件"12",並且跟已經存在的指向物件"12"的變數的引用相同。例如上面的a跟a1引用相同。

2.如果"12"在string常量池中不存在,則直接在string常量池建立乙個物件"12",然後指向"12"

new string("123")建立string object分為兩種情況:

1.如果string常量池中,已經建立"123",則不會繼續建立,此時只在變數區建立了乙個物件new string("123");

2.如果string常量池中,沒有建立"123",則會建立兩個物件,乙個在常量池中建立物件"123",乙個在變數區中建立物件new string("123")。

上面的第3個的b跟第四句的bi,指向不同,而且變數區會存在兩個"123",也就是說new string("***")就算內容相同,也會在變數區建立不同的物件,一用到new string("***"),就會建立新的物件。

string c = "hello2"

string c1 = "hello"+2

c == c1是ture的,也就是說引用相同,都是指向string常量池中同乙個物件"hello2"。

string e = "hello";

string c2 = e + 2;

final string f = "hello"

string c3 = f + 2;

c == c3是ture的,f變數被final修飾,成了乙個字串常量,在前端編譯器標註檢查這個步驟中,有乙個常量摺疊的動作,也就是說string c3 = f +2被優化成string c3 = "hello2"(使用到f的地方會直接將變數f替換為它的值,這樣就相當於"hello"+2).這樣c和c3就是引用string常量池中相同的字串,所以a == d為true.

java 字串擷取的幾種方式

1.split 正規表示式來進行擷取。將正則傳入split 返回的是乙個字串陣列型別。不過通過這種方式擷取會有很大的效能損耗,因為分析正則非常耗時。string str abc,12,3yy98,0 string strs str.split for int i 0,len strs.length ...

集錦 java字串的擷取方式

1.split 正規表示式來進行擷取。將正則傳入split 返回的是乙個字串陣列型別。缺點 會有很大的效能損耗,因為分析正則非常耗時。string str abc,12def string strs str.split for int i 0 i strs.length i 執行結果 abc12de...

java 字串擷取的幾種方式

1.split 正規表示式來進行擷取。將正則傳入split 返回的是乙個字串陣列型別。不過通過這種方式擷取會有很大的效能損耗,因為分析正則非常耗時。string str abc,12,3yy98,0 string strs str.split for int i 0,len strs.length ...