《黑馬程式設計師》String類涉及到的知識深化理解
阿新 • • 發佈:2019-02-09
String: 常量池: 它是jvm中的一塊獨立的區域。用於存放字串常量和基本型別的常量(public static final) String是private final char value[] 修飾的。物件在了建立的時候,裡面的內容就是不可以更改的。 所以String中的內容是不可以被更改的 建立字串的兩種區別 "" 它是匿名的字串物件。它在編譯時,就被儲存到了字串常量池中了。 下次在儲存的是時候,如果常量池中沒有,就會建立一個,如果有就不會建立,而是取出來直接使用。 享元設計模式也是由此引發出來的 int 型別的只存0-127如果是其它的就存不進去了 new String("") 它是需要在堆記憶體中開闢空間。即建立實體。它是在執行的時候才會建立。 StringBuilder與StringBuffer的區別 StringBuilder是執行緒不安全的效率高 StringBuffer是執行緒安全的。效率低(jdk1.5後出現的) 這個在多個執行緒訪問同一個共享字串的時候可以使用。解決安全問題 可以把StringBuilder看作是單行道的車道。這樣因為只有一個車道所以走的時候不用擔心那麼多。 而我們即使是沒有使用多執行緒,合適StringBuffer它的效率也會慢就是StringBuilder不用擔心 而StringBuffer它總是顧前顧後。它要進行車的避讓。所以效率低(因為StringBuffer它是運行於多執行緒的 相當於是它是習慣多行車道,在多行車道上它總是要考慮車輛的避讓的)