java源码分析-String

重要指数:满星,慢慢品。

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一般出问题的时候才会想到这个。

原文地址:https://www.cnblogs.com/haerwang/p/9957973.html