StringBuilder(裏面附帶說了說Serializable接口)

StringBuilderjava

這個類的api和StringBuffer的api兼容,只是不能保證同步。在使用單例的狀況下,優先選擇StringBuilder,由於它比StringBuffer的效率更高。api

StringBuilder上的主要操做是append和insert方法,它們被重載,以便接受任何類型的數據。每一個方法都有效地將給定的數據轉換爲字符串,而後將該字符串的字符追加或插入到字符串生成器中。append方法老是在構建器的末尾添加這些字符;insert方法在指定的位置添加字符。數組

除非另有說明,不然將null參數傳遞給該類中的構造函數或方法將引起NullPointerException。安全

在多線程下,StringBuilder是線程不安全的,若是想要線程安全,請使用StringBuffer。多線程

子類實現父類實現了的接口,除了可讀性,還有其餘意義嗎?app

這個類的構造方法,當是無參構造方法的時候,默認初始化容量是16;當須要本身指定初始化容量大小時,用int類型的參數傳入構造方法;當傳參爲String或者CharSequence的時候,這個類的初始化容量是傳入對象的長度加上16.(不太清楚爲何加上16)函數

這個類大多數方法的實現,都是用的父類對應的方法,只有如下幾個方法,是本身實現的。ui

不太懂爲何都是用的父類的方法,還須要重寫,爲何干脆不寫呢?仍是寫了是爲了讓調用這個類的調用方不用瞭解他的父類,就知道有哪些可用的方法。線程

toString方法:轉成String類型,該方法內部實現是建立一個副本,不要共享數組。父類中該方法是抽象的,須要子類本身實現。對象

writeObject和readObject方法,這2個方法都是私有的,這2個方法就是實現序列化接口的意義。

而後再說說序列化接口,實現java.io.Serializable接口的類支持類的序列化。不實現此接口的類將不會對其任何狀態進行序列化或反序列化。可序列化類的全部子類型自己都是可序列化的。序列化接口沒有方法或字段,僅用於標識可序列化的語義。子類型要想有序列化的能力,必需要有無參構造方法。

實現序列化和反序列化時,必須實現具備以上標誌的方法。

相關文章
相關標籤/搜索