重要指数:满星,慢慢品。
public final class String implements java.io.Serializable, Comparable<String>, CharSequence
首先类的声明
没有显式继承 Object ,但是jvm在加载类的时候发现没有父类,自动引入Object 父类。
final 不能继承 (方法种没有set方法)
java.io.Serializable 这篇博客写的很好 https://blog.csdn.net/dreamtdp/article/details/15378329
至于如何实现的后面有机会再说。至于为什么String实现序列化呢,,我想基本类型对应的几个类应该都会继承(其他还没看),因为你要序列化一个自定义类,类中的变量是String,Integer,,所以,,,
Comparable<T> 泛型实现,,后面会单独写泛型的,就是为了实现compareTo<String>
CharSequence 接口,,,应该是响应 抽象 的特征 ,,作为String StringBuilder StringBuffer的共同抽象体。顾名思义这三个都是 基于字符数组的。
成员变量
private final char value[];//数据仓库
private int hash; //数据hash
private static final long serialVersionUID = -6849794470754667710L;//序列化的
private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];//应该是序列化相关的,
方法
前四个没啥说的,,特殊点就是 用到了 Arrays.copyOf(value, value.length); Arrays.copyOfRange(value, offset, offset+count); 平常写代码可以多用,
看下这个,入参是 int[] codePoints,,关于codePoint 引入了 java使用utf-16编码的,,https://www.cnblogs.com/simple-huang/p/8643799.html
其他都是为了方便使用者,大牛们封装的方法。
值得深究的是 format 可单独详细说明一下。
format 中涉及到的Local一般出问题的时候才会想到这个。