• Java源码——String


      最近在研究java的源代码,但是由于自己英语水平有限,所以想使用中文注释的方式把源码里的方法全部重写

      一遍,下面是楼主整理出来的一小部分。我把整体的项目托管到GitHub上了,欢迎大家前去交流学习。

      GitHub : https://github.com/15128928804/yuanMa

      

    /**
    * @Author:zhuangfei
    * @Description:初始化一个新的 String 对象用来表示一个空的字符序列。
    * 注意,这个构造方法是没有使用的必要的,因为字符串是不可变的
    * @Date:16:48 2017/11/8
    */
    public String() {
    this.value = "".value;
    }

    /**
    * @Author:zhuangfei
    * @Description:初始化一个新的 String对象用来表示相同的字符序列作为参数,
    * 换句话说,新创建的字符串是参数字符串的副本。除非一个‘需要的’显示拷贝,
    * 否则是不必使用此构造函数的,因为字符串是不可变的
    * @Date:16:53 2017/11/8
    */
    public String(String original) {
    this.value = original.value;
    this.hash = original.hash;
    }

    /**
    * @Author:zhuangfei
    * @Description:分配一个新的String用来表示序列字符数组参数中包含的字符。
    * 在该字符数组的内容被复制后的修改中,字符数组不影响新创建的字符串
    * @Date:16:58 2017/11/8
    */
    public String(char value[]) {
    this.value = Arrays.copyOf(value, value.length);
    }

    /**
    * @Author:zhuangfei
    * @Description:分配一个新的String对象用来包含来自子数组的字符
    * 字符数组参数。offset参数是子数组的第一个字符和count位置的索引指定的
    * 子数组的长度的内容。
    * 子数组被复制后对子数组进行修改不影响新创建的字符串
    * value:源数据
    * offset:初始偏移
    * count:偏移长度
    * PS:如果offset和count所得到的值不在源数组的下标内,会抛出
    * IndexOutOfBoundsException(数组下标越界) 异常
    * @Date:17:02 2017/11/8
    */
    public String (char value[], int offset, int count) {
    if(offset < 0) { // 没有偏移量
    throw new StringIndexOutOfBoundsException(offset); // 抛出索引越界异常
    }
    if(count <= 0) {
    if(count < 0) {
    throw new StringIndexOutOfBoundsException(count); // 抛出索引越界异常
    }
    if(offset <= value.length) { // 初始偏移量<=源数据长度时直接返回源数据
    this.value = "".value;
    return;
    }
    }
    // 源码解释:偏移量或计数可能在 -1 附近
    if(offset > value.length - count) { // 初始偏移量>源数据-初始位置的数据后的长度
    throw new StringIndexOutOfBoundsException(offset + count); // 抛出索引越界异常
    }
    this.value = Arrays.copyOfRange(value, offset,offset+count); // 执行方法
    }
  • 相关阅读:
    linux 虚拟机固定Ip地址
    艰难的K8s环境准备及集群安装kuberneters
    妙啊!动画还可以这样控制?
    shell删除变量中的字符(字符串替换)
    如何在shell的循环中实现字符串的拼接
    echo输出原始字符串中连续多个空格的方法
    std:;mutex 使用
    免费素材网站合集
    从华为转正到离职
    C++实现图的遍历和最短路径
  • 原文地址:https://www.cnblogs.com/zhuangfei/p/7814866.html
Copyright © 2020-2023  润新知