java string 异或_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); // 执行方法
}
java string 异或_Java源码——String相关推荐
- java装逼的话_Java 源码装逼技能之让人懵逼的符号
源码就是符号位 + 二级制数值.符号位是第一位,0 表示正数,1 表示负数. Java 中 byte 类型一字节八位,可以表示 [1111 1111 , 0111 1111],取值 [-127,127 ...
- java代码管理工具_java源码管理与版本控制工具,图文详解
近些年社会科学技术水平的发展越来越快速了,这也促进了人们对于新技术新知识的学习.尤其是java的应用也越来越广泛.今天就来为大家介绍一下,java源码管理与版本控制工具,一起来了解一下吧. java项 ...
- java计算本金利息_Java源码——复利的计算(compound interest)
代码功能: 给出本金,计算在不同的年复合利率下不同经过年数(期数)对应的本息和. 代码: package v1ch03.CompoundInterest; /** * This program sho ...
- java的resize函数_Java源码解析HashMap的resize函数
hashmap的resize函数,用于对hashmap初始化或者扩容. 首先看一下该函数的注释,如下图.从注释中可以看到,该函数的作用是初始化或者使table的size翻倍.如果table是null, ...
- Android研发中对String的思考(源码分析)
1.常用创建方式思考: String text = "this is a test text "; 上面这一句话实际上是执行了三件事 1.声明变量 String text; 2. ...
- 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 ...
- java连接mongodb_java连接mongodb源码解读
用mongdb也大半年了,一直是业务上的逻辑实现了就ok.然而这样并不能进步--因此今天查了查java连接mongodb驱动的源码,搜到的各种信息整合一下,方便以后深入的使用. 先贴连接数据库代码Li ...
- java B2B2C Springboot电子商务平台源码-Feign 基本使用
1. [microcloud-consumer-feign]为了可以使用到 feign 支持,需要修改 pom.xml 配置文件,引入相关依赖包:需要JAVA Spring Cloud大型企业分布式微 ...
- java.util.concurrent.locks.Condition 源码
2019独角兽企业重金招聘Python工程师标准>>> 相关类图: 使用Condition和 object作为条件队列的区别: object: 只能绑定一个内部队列,使用notify ...
最新文章
- 2021年需要学习Python的自动化测试框架有哪些?你知道吗?
- 最强无监督行人重识别方法 Cluster Contrast ReID,rank-1 94.6%
- LA3971 组装电脑
- mysql elt interval_mysql 区间分组 interval,elt 的运用
- C++---map/multimap用法介绍
- 【复习笔记】Cache的映像方法
- 加密芯片算法移植方案的优点
- 2.4g 无线键鼠对码软件_RK526无线键鼠套装开箱体验
- linux /etc/security/limits.conf的相关说明
- c语言程序设计答案四,C语言程序设计练习四(参考答案)
- Tomcat热部署三种方式的详细说明
- mysql admin账号密码忘记_使用mysqladmin命令修改Mysql密码与忘记密码
- Oracle:ORA-12505解决办法
- 罗宾斯管理学13版pdf_罗宾斯管理学13版答案pdf
- java8:新特性及Lamber表达式语法及四大函数接口
- antd-select下拉框如何同时获取所选值ID和名字属性
- 上海电信账单余额查询接口
- linux系统盘锁着,用Linux启动盘解决硬盘逻辑锁
- 成像质量、像素个数、感光元件尺寸的关系
- 第一节、linux中安装redis(一)
热门文章
- ds证据理论python实现_你好,Julia!再见,Python!
- 深度学习框架TensorFlow(4.Fetch and Feed)
- leetcode111 爬楼梯 python实现
- wxWidgets:wxInfoBar类用法
- wxWidgets:wxArtProvider类用法
- boost::units模块实现确保最小的 + - * / 单元类功能齐全的测试程序
- boost::type_erasure::relaxed相关的测试程序
- boost::serialization模块测试extended_type_info的实现,使用多个共享库时有效
- boost::range_const_iterato相关的测试程序
- boost::mp11::mp_replace_second相关用法的测试程序