zoukankan      html  css  js  c++  java
  • 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一般出问题的时候才会想到这个。

  • 相关阅读:
    docker部署遇到的问题集合【持续更新】
    docker开发常用命令
    idea使用三步曲
    防缓存穿透设计
    亿级数据库分片分库架构设计亿【转】
    java-web项目换装servlet3.1.0后性能飙升到10000tps
    spring-kafka消费者配置
    分布式disconf+spring5使用遇到重复加载的问题
    jmeter性能压测
    springboot多profile环境maven配置
  • 原文地址:https://www.cnblogs.com/haerwang/p/9957973.html
Copyright © 2011-2022 走看看