天天看點

【Java基礎】java基礎彙總

前言:java常用且基礎的String相關的總結,其中重在說明三者運作效率

String,StringBuffer,StringBuilder,關于這三個類在字元串進行中有什麼優缺點,從下面幾點說明:

1.速度:StringBuilder > StringBuffer > String

String <(StringBuffer,StringBuilder)的原因

String:字元串常量

StringBuffer:字元串變量 StringBuilder:字元串變量

舉例:

1 String s = “chenshi”;

2 s = s+1;

3 System.out.print(s);// result : chenshi1

分析:String是“字元串常量”,也就是不可改變的對象。

以上代碼建立對象s,賦予一個chenshi,然後再建立一個新的對象s用來 執行第二行代碼,也就是說我們之前對象s并沒有變化,還存在,其值任為chenshi。

由于這種機制,每當用String操作字元串時,實際上是在不斷的建立新的對象,而原來的對象就會變為垃圾被GC回收掉,是以其執行效率會底。

而StringBuffer與StringBuilder是字元串變量,是可改變的對象,每當我們用它們對字元串做操作時,實際上是在一個對象上操作的,這樣就不會像String一樣建立一些額外的對象進行操作,速度就快了。

2.一個特殊的例子:

1 String str = “Today” + “ is” + “ great”;

3 StringBuffer builder = new StringBuilder(“Today”).append(“is”).append(“ great”);

他們的速度相當,因為String str = “Today is great”;

和 String str = “Today” + “ is” + “ great”;等同的。

3.StringBuilder與 StringBuffer

StringBuilder:線程非安全的

StringBuffer:線程安全的

  當我們在字元串緩沖去被多個線程使用是,JVM不能保證StringBuilder的操作是安全的,雖然他的速度最快,但是可以保證StringBuffer是可以正确操作的。當然大多數情況下就是我們是在單線程下進行的操作,是以大多數情況下是建議用StringBuilder而不用StringBuffer的,就是速度的原因。

總結:

1.如果要操作少量的資料用 = String

2.單線程操作字元串緩沖區 下操作大量資料 = StringBuilder

3.多線程操作字元串緩沖區 下操作大量資料 = StringBuffer

繼續閱讀