關於String中建立物件的區別

2021-10-09 18:47:23 字數 771 閱讀 7996

string的建立方式一般有兩種,一種是常見的new string(),如string s1 = new string("ab"),另一種是字面量賦值,如string s2 = "ab"。第一種物件的建立方式會建立兩個物件,乙個是new建立的物件,乙個是在字串常量池中建立"ab"字串。第二種方式是直接在字串常量池中建立"ab"字串(前提是字串常量池沒有該字串,有的話,直接把該引用賦值給s2)。

public void test1()
執行截圖:

public void test2()
執行截圖:

public void test3()
執行截圖:

public void test4()
執行截圖:

總結:對於字串拼接操作,如果拼接的字串是字串常量或常量引用,則仍然使用編譯優化(即直接合併字串常量),如果該字串常量包含變數引用,則使用stringbuilder來建立物件。具體過程如下:

1建立stringbuilder物件。

3呼叫stringbuilder物件的tostring()方法返回字串。(約等於新建立乙個字串)

關於string的物件引用

什麼都不說了,一切都在 裡 1string a1 aaa 在堆中分配 aaa 2string a2 aaa 堆中已有 aaa 則不再給 aaa 分配新空間,a2指向a1的位址 3string a3 newstring aaa tochararray new產生新的物件,分配新的空間45 consol...

詳述如何建立String物件

關係運算子 判斷值是否相等 如果在基本資料型別中,由於變數與值同在棧中,所以比較的是值是否相等。如果在引用型別中,由於變數中存的是物件的位址則比較的是否位址相同 1,字串建立物件方式有兩種 直接賦值,new構造方法 比如 a,string name tom b,string address new ...

建立了幾個String物件?

string str a 1個,在常量池中建立了乙個字串物件。string str new string a 2個,在常量池中建立了乙個字串物件 a 在堆中開闢了乙個空間又放了乙個 a string str a b 1個,在編譯期,jvm將 a b 自動識別成 ab 因此只建立了乙個物件,放在常量池...