? ? ? String類型、表示字符串,Java中所有字符串如”123”都用此類型為實(shí)例、字符串是產(chǎn)量,他的值創(chuàng)建后就不可以修改了;

?????應(yīng)為String是不可變類型,所以如果字符串拼接時(shí)的話如果用String的話可能會(huì)降低性能,所以JDK又提供了兩個(gè)可變的字符串類StringBuilder和StringBuffer;
?????String和stringbuilder、stringbuffer的區(qū)別:
? ? ?1、可變性:
? ? ?String類型對(duì)象一旦創(chuàng)建后是不可變的,一旦創(chuàng)建后知道這個(gè)對(duì)象被銷毀都是不可以改變的;
? ? ?Stringbuilder和stringbuffer類型字符串可以改變;
? ? ?2、安全性:
? ? ?String類型是對(duì)象是不可變的,是線程安全的;
? ? ?Stringbuffer類型是線程安全的,因?yàn)樵谒膬?nèi)部有synchronized鎖來(lái)保證線程安全;而stringbuilder類型不是線程安全的;
? ? ?3、性能:
? ? ?String類型在每次操作更改對(duì)象時(shí),都會(huì)創(chuàng)建出新的對(duì)象,并將指針指向新的對(duì)象,效率極低,stringbuffer、stringbuilder每次更改都是在對(duì)象本身進(jìn)行操作,不會(huì)生成新的對(duì)象來(lái)改變對(duì)象的引用,性能相對(duì)較好,相同情況下stringbuilder要比stringbuffer性能好上百分之時(shí)左右,但是stringbuilder是線程不安全的;
? ? ?4、使用場(chǎng)景:
? ? ?少量字符串操作可以直接使用string類型;
? ? ?單線程操作字符串緩沖區(qū)大量字符串使用stringbuilder;
? ? ?多線程操作字符串緩沖區(qū)大量字符串使用stringbuffer;