最近在研究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); // 执行方法

}

java string 异或_Java源码——String相关推荐

  1. java装逼的话_Java 源码装逼技能之让人懵逼的符号

    源码就是符号位 + 二级制数值.符号位是第一位,0 表示正数,1 表示负数. Java 中 byte 类型一字节八位,可以表示 [1111 1111 , 0111 1111],取值 [-127,127 ...

  2. java代码管理工具_java源码管理与版本控制工具,图文详解

    近些年社会科学技术水平的发展越来越快速了,这也促进了人们对于新技术新知识的学习.尤其是java的应用也越来越广泛.今天就来为大家介绍一下,java源码管理与版本控制工具,一起来了解一下吧. java项 ...

  3. java计算本金利息_Java源码——复利的计算(compound interest)

    代码功能: 给出本金,计算在不同的年复合利率下不同经过年数(期数)对应的本息和. 代码: package v1ch03.CompoundInterest; /** * This program sho ...

  4. java的resize函数_Java源码解析HashMap的resize函数

    hashmap的resize函数,用于对hashmap初始化或者扩容. 首先看一下该函数的注释,如下图.从注释中可以看到,该函数的作用是初始化或者使table的size翻倍.如果table是null, ...

  5. Android研发中对String的思考(源码分析)

    1.常用创建方式思考: String text = "this is a test text "; 上面这一句话实际上是执行了三件事  1.声明变量 String text; 2. ...

  6. Redis源码-String:Redis String命令、Redis String存储原理、Redis String三种编码类型、Redis字符串SDS源码解析、Redis String应用场景

    Redis源码-String:Redis String命令.Redis String存储原理.Redis String三种编码类型.Redis字符串SDS源码解析.Redis String应用场景 R ...

  7. java连接mongodb_java连接mongodb源码解读

    用mongdb也大半年了,一直是业务上的逻辑实现了就ok.然而这样并不能进步--因此今天查了查java连接mongodb驱动的源码,搜到的各种信息整合一下,方便以后深入的使用. 先贴连接数据库代码Li ...

  8. java B2B2C Springboot电子商务平台源码-Feign 基本使用

    1. [microcloud-consumer-feign]为了可以使用到 feign 支持,需要修改 pom.xml 配置文件,引入相关依赖包:需要JAVA Spring Cloud大型企业分布式微 ...

  9. java.util.concurrent.locks.Condition 源码

    2019独角兽企业重金招聘Python工程师标准>>> 相关类图: 使用Condition和 object作为条件队列的区别: object: 只能绑定一个内部队列,使用notify ...

最新文章

  1. 2021年需要学习Python的自动化测试框架有哪些?你知道吗?
  2. 最强无监督行人重识别方法 Cluster Contrast ReID,rank-1 94.6%
  3. LA3971 组装电脑
  4. mysql elt interval_mysql 区间分组 interval,elt 的运用
  5. C++---map/multimap用法介绍
  6. 【复习笔记】Cache的映像方法
  7. 加密芯片算法移植方案的优点
  8. 2.4g 无线键鼠对码软件_RK526无线键鼠套装开箱体验
  9. linux /etc/security/limits.conf的相关说明
  10. c语言程序设计答案四,C语言程序设计练习四(参考答案)
  11. Tomcat热部署三种方式的详细说明
  12. mysql admin账号密码忘记_使用mysqladmin命令修改Mysql密码与忘记密码
  13. Oracle:ORA-12505解决办法
  14. 罗宾斯管理学13版pdf_罗宾斯管理学13版答案pdf
  15. java8:新特性及Lamber表达式语法及四大函数接口
  16. antd-select下拉框如何同时获取所选值ID和名字属性
  17. 上海电信账单余额查询接口
  18. linux系统盘锁着,用Linux启动盘解决硬盘逻辑锁
  19. 成像质量、像素个数、感光元件尺寸的关系
  20. 第一节、linux中安装redis(一)

热门文章

  1. ds证据理论python实现_你好,Julia!再见,Python!
  2. 深度学习框架TensorFlow(4.Fetch and Feed)
  3. leetcode111 爬楼梯 python实现
  4. wxWidgets:wxInfoBar类用法
  5. wxWidgets:wxArtProvider类用法
  6. boost::units模块实现确保最小的 + - * / 单元类功能齐全的测试程序
  7. boost::type_erasure::relaxed相关的测试程序
  8. boost::serialization模块测试extended_type_info的实现,使用多个共享库时有效
  9. boost::range_const_iterato相关的测试程序
  10. boost::mp11::mp_replace_second相关用法的测试程序