最近在研究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的更多相关文章

  1. Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库

    http://www.iteye.com/topic/1113732 原则网址 Java源码初接触 如果你进行过一年左右的开发,喜欢用eclipse的debug功能.好了,你现在就有阅读源码的技术基础 ...

  2. Java 源码刨析 - String

    [String 是如何实现的?它有哪些重要的方法?] String 内部实际存储结构为 char 数组,源码如下: public final class String implements java. ...

  3. Java源码赏析(五)再识 String 类

    在 Java源码赏析(三)初识 String 类   中,我们已经大概理解了String的接口,接下来我们描述一下String的常用工具方法. /** * 为了精简的String结构,之前提到的方法省 ...

  4. Java源码赏析(三)初识 String 类

    由于String类比较复杂,现在采用多篇幅来讲述 这一期主要从String使用的关键字,实现的接口,属性以及覆盖的方法入手.省略了大部分的字符串操作,比如split().trim().replace( ...

  5. 如何阅读Java源码 阅读java的真实体会

    刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心.   说到技术基础,我打个比 ...

  6. 如何阅读Java源码

    刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动.源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比方吧, ...

  7. Programming a Spider in Java 源码帖

    Programming a Spider in Java 源码帖 Listing 1: Finding the bad links (CheckLinks.java) import java.awt. ...

  8. 使用JDT.AST解析java源码

    在做java源码的静态代码审计时,最基础的就是对java文件进行解析,从而获取到此java文件的相关信息: 在java文件中所存在的东西很多,很复杂,难以用相关的正则表达式去一一匹配.但是,eclip ...

  9. [收藏] Java源码阅读的真实体会

    收藏自http://www.iteye.com/topic/1113732 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我 ...

随机推荐

  1. 在 Sublime Text 直接运行 Javascript 调试控制台

    转载自:http://www.jianshu.com/p/43b0726792f7 sublime text javascript Sublime Text是深受喜欢的多语言编辑器,很多开发人员都选择 ...

  2. 安装K/3 Cloud过程中发现的两个新问题。

    卸载掉K/3 Cloud然后重装时出现下面的错误提示: 可能原因: 1.安装目录下的Setup.exe会检查操作系统版本.有些操作系统可能是被串改过注册信息,所以取不到版本信息(有些是因为盗版的原因) ...

  3. A Simple Problem with Integers-POJ3468

    Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...

  4. html自动换行

    对于div,p等块级元素 正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定义的宽度之后自动换行html css 1.(IE浏览器)连续的英文字符和阿拉伯数 ...

  5. zabbix学习系列之配置邮件告警

    整体思路是:添加监控项-->配置触发器(达到设定的阈值就触发)-->配置动作(将某个触发器绑定到某个动作,达到某个阈值,触发器触发的时候,通过邮件发送告警信息给某个用户) 配置触发器 创建 ...

  6. modem&NIC&sound card

    Rate: Phone:8 k hz   radio:22050 hz Digital Video camcorder; miniDV; DAT LP mode:32 k hz Audio CD MP ...

  7. samba add new smbpasswd & recycle

    建立新账号(XXXXX)的范列: sudo useradd XXXXX -m   #建立本机用户且home下建文件夹 sudo smbpasswd XXXXX -a   #建立samba用戶且设定密码 ...

  8. ArcGIS 教程:Workflow Manager 高速浏览

    应用程序概述 Workflow Manager 用户界面提供了用于在整个作业的生命周期中创建和管理作业的工具. 下面全部信息将会在本帮助文档的兴许章节中进行具体的说明. 文件菜单 新建 - 在系统中创 ...

  9. [Maid] Write Tasks in Markdown with Maid

    Maid enables you to write your tasks in Markdown. Create a maidfile.md or a README.mdthen add Header ...

  10. STM32F104VG (一)中断与外部中断

    一.基础知识 1.ARM的中断优先级分硬件优先级和软件优先级两种 当中软件优先级又由抢占优先级和响应优先级组成 2.中断的优先级採用编号小优先的原则. 3.普通情况: 1).假设设定了软件优先级.先看 ...