• 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); // 执行方法
    }
  • 相关阅读:
    Pytorch版本yolov3源码阅读
    Darknet卷基层浅层特征可视化教程
    YOLOv3-darknet 内容解析
    YOLOv2-darknet 内容解析
    YOLOv1-darknet 内容解析
    Qt5.2+opencv2.4.9配置安装过程
    Android程序示例
    【Cuda编程】加法归约
    算法设计与分析课程的时间空间复杂度
    【算法分析】实验 4. 回溯法求解0-1背包等问题
  • 原文地址:https://www.cnblogs.com/zhuangfei/p/7814866.html
Copyright © 2020-2023  润新知