String是不可變的對象,一旦建立就不能改變。String被存放在字符串常量池中,Java中每個不可變對象都是線程安全的,因此String也是線程安全的。安全
性能:慢。多線程
使用場景:常量聲明,少許的變量運算。性能
StringBuffer是可變的,咱們能夠改變它的值。new StringBuffer建立的對象被放在堆中,StringBuffer和StringBuiler有相同的方法,可是StringBuffer的每一個方法都有synchronized,因此它是線程安全的,也所以在性能上不如StringBuilder。。ui
性能:很快。線程
使用場景:多線程中頻繁的進行字符串操做。對象
StringBuiler和StringBuffer相同,也是被存儲在堆中,能夠被修改,他們主要的不一樣就是StringBuilder不是線程安全的。字符串
性能:很快。變量
使用場景:不要求線程安全的頻繁的進行字符串操做。方法