可變字串行與String物件使用的陷阱

2021-10-24 19:17:36 字數 885 閱讀 9491

首先介紹兩種類:stringbuilder類和stringbuffer類;這兩種類的物件的實體都是字串行(即字串),但與string類不同的是,這兩種類的物件的字串行可以進行修改,刪除等操作(即物件的實體可以改變),而string物件的字串行不行,string物件的實體是不允許發生變化的;

stringbuilde類r和stringbuffer類的區別

stringbuilder類執行緒不安全,效率高;

stringbuffer執行緒安全,效率低

所以一般用stringbuilder類

string物件使用的陷阱:

當我們建立乙個string物件後,如果多次執行改變string物件的內容這樣的操作(「+」運算,呼叫string類的某些修改內容的函式等),就會導致大量的字串行副本留在記憶體中,降低效率,如果這種操作放在迴圈中,會極大影響程式的時間和空間效能解釋:當我們對string物件進行「+」這種改變內容的操作的時候,由於string物件的實體不能發生變化,所以會重新生成乙個string物件,將新生成的物件的引用賦給原來的string型別的變數,經過多次操作便會產生多個新物件,導致大量的字串行副本留在記憶體中解決方法:使用stringbuilder物件或者stringbuffer物件來替代string物件進行運算,這兩種物件是可以對字串行進行修改操作的,不會產生副本拷貝或者少量的副本拷貝

//使用string物件進行字串拼接

public class test1

system.out.println(i);

}}

Java陣列 可變字串行

stringbulider 常用 與stringbuffer 可變字串行 stringbuilder 執行緒不安全,效率高,一般用這個 stringbuffer 執行緒安全 author administrator public class teststringbuilder stringbuild...

String物件不可變

string s hello s s world 這兩行 執行後,原始的string物件中的內容是否改變?不會改變。因為string類為final型別,它的所有物件都是不可變物件。在這段 中,s原先指向乙個string物件,內容是 hello 它在字串常量池中。然後我們對s進行了 操作,這時s不再指...

測試可變字串行和不可變字串行使用的陷阱 s

一.使用string進行字串拼接 string str1 long num1 runtime.getruntime freememory 獲取系統剩餘記憶體空間 long num2 system.currenttimemillis 獲取系統當前時間 for int i 0 i 5000 i long...