StringBuilder(里面附带说了说Serializable接口)

StringBuilder

这个类的api和StringBuffer的api兼容,只是不能保证同步。在使用单例的情况下,优先选择StringBuilder,因为它比StringBuffer的效率更高。

StringBuilder上的主要操作是append和insert方法,它们被重载,以便接受任何类型的数据。每个方法都有效地将给定的数据转换为字符串,然后将该字符串的字符追加或插入到字符串生成器中。append方法总是在构建器的末尾添加这些字符;insert方法在指定的位置添加字符。

除非另有说明,否则将null参数传递给该类中的构造函数或方法将引发NullPointerException。

在多线程下,StringBuilder是线程不安全的,如果想要线程安全,请使用StringBuffer。

StringBuilder(里面附带说了说Serializable接口)_第1张图片

子类实现父类实现了的接口,除了可读性,还有其他意义吗?

这个类的构造方法,当是无参构造方法的时候,默认初始化容量是16;当需要自己指定初始化容量大小时,用int类型的参数传入构造方法;当传参为String或者CharSequence的时候,这个类的初始化容量是传入对象的长度加上16.(不太清楚为什么加上16)

StringBuilder(里面附带说了说Serializable接口)_第2张图片

这个类大多数方法的实现,都是用的父类对应的方法,只有以下几个方法,是自己实现的。

不太懂为什么都是用的父类的方法,还需要重写,为什么干脆不写呢?还是写了是为了让调用这个类的调用方不用了解他的父类,就知道有哪些可用的方法。

toString方法:转成String类型,该方法内部实现是创建一个副本,不要共享数组。父类中该方法是抽象的,需要子类自己实现。

StringBuilder(里面附带说了说Serializable接口)_第3张图片

writeObject和readObject方法,这2个方法都是私有的,这2个方法就是实现序列化接口的意义。

StringBuilder(里面附带说了说Serializable接口)_第4张图片

然后再说说序列化接口,实现java.io.Serializable接口的类支持类的序列化。不实现此接口的类将不会对其任何状态进行序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。子类型要想有序列化的能力,必须要有无参构造方法。

StringBuilder(里面附带说了说Serializable接口)_第5张图片

实现序列化和反序列化时,必须实现具有以上标志的方法。

StringBuilder(里面附带说了说Serializable接口)_第6张图片

 

转载于:https://my.oschina.net/u/3944601/blog/3043623

你可能感兴趣的:(java)