一、类
public final class String:final关键字说明String类不能被修改(不能被其他类继承和重写)

public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence

二、方法
1、subString(int beginIndex, int endIndex):截取子字符串
1) 第一层方法

public String substring(int beginIndex, int endIndex) {// beginIndex校验不能小于0if (beginIndex < 0) {throw new StringIndexOutOfBoundsException(beginIndex);}// endIndex校验不能>数组长度if (endIndex > value.length) {throw new StringIndexOutOfBoundsException(endIndex);}// 获取要截取的子字符串的长度int subLen = endIndex - beginIndex;if (subLen < 0) {throw new StringIndexOutOfBoundsException(subLen);}// 判断return ((beginIndex == 0) && (endIndex == value.length)) ? this: new String(value, beginIndex, subLen);}

2) 调用String的有参构造方法

public String(char value[], int offset, int count) {// beginIndex不能小于0if (offset < 0) {throw new StringIndexOutOfBoundsException(offset);}// count = endIndex-beginIndex <=0的情况if (count <= 0) {// count小于0,抛出异常if (count < 0) {throw new StringIndexOutOfBoundsException(count);}// count = 0时,输出空字符串if (offset <= value.length) {this.value = "".value;return;}}// endIndex > value.length长度时抛出异常if (offset > value.length - count) {throw new StringIndexOutOfBoundsException(offset + count);}// 执行数组复制this.value = Arrays.copyOfRange(value, offset, offset+count);}

3) 调用Arrays.copyOfRange方法实现复制数组中元素到另外一个char数组中

public static char[] copyOfRange(char[] original, int from, int to) {int newLength = to - from;if (newLength < 0)throw new IllegalArgumentException(from + " > " + to);// 声明一个char数组,用来装载截取的子字符串char[] copy = new char[newLength];// 核心代码,最终通过它实现将char原始数组中的元素复制到另外一个char数组中System.arraycopy(original, from, copy, 0,Math.min(original.length - from, newLength));return copy;}

未完待续~

java.lang中String类源码分析相关推荐

  1. Java 8 中 GZIPInputStream 类源码分析

    这是<水煮 JDK 源码>系列 的第4篇文章,计划撰写100篇关于JDK源码相关的文章 GZIPInputStream 类位于 java.util.zip 包下,继承于 InflaterI ...

  2. Java NIO中Charset类源码

    Java NIO中Charset类源码 public abstract class Charsetimplements Comparable<Charset> {private stati ...

  3. Java String类源码阅读笔记

    文章目录 一.前置 二.String类源码解析 1.String类继承关系 2.成员变量 3.构造方法 4.长度/判空 5.取字符 6.比较 7.包含 8.hashCode 9.查询索引 10.获取子 ...

  4. java的String类源码详解

    java的String类源码详解 类的定义 public final class Stringimplements java.io.Serializable, Comparable<String ...

  5. java.lang.ThreadLocal实现原理和源码分析

    java.lang.ThreadLocal实现原理和源码分析 1.ThreadLocal的原理:为每一个线程维护变量的副本.某个线程修改的只是自己的副本. 2.ThreadLocal是如何做到把变量变 ...

  6. java vector实现的接口_java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析...

    java面试中经常被问到list常用的类以及内部实现机制,平时开发也经常用到list集合类,因此做一个源码级别的分析和比较之间的差异. 首先看一下List接口的的继承关系: list接口继承Colle ...

  7. Java String类源码解析

    String直接继承Object 含有一个char[] value,还有一个int hash默认值为0 new String()的构造产生的是一个值为""的字符数组 String( ...

  8. Java集合篇:LinkedList源码分析

    (注:本文内容基于JDK1.6) 一.概述: LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口 ...

  9. Java设计模式学习以及底层源码分析

    源码在分支master 工厂模式 把具体创建产品的细节封装起来,你要什么产品,我给你什么产品即可. 简单工厂模式 工厂方法模式 缓存层:抽象类 抽象工厂模式 缓存层是:接口 原型模式 问题: 原型模式 ...

最新文章

  1. 解决在vscode使用webpack指令显示“因为在此系统中禁止运行脚本“问题
  2. Android开发过程中内存泄露检测
  3. hexo的yelee主题使用本地自己指定的自定义字体
  4. python 知乎 合并 pdf_一键下载:将知乎专栏导出成电子书
  5. 现代软件工程第六章作业
  6. Webpack webpack+gulp实现自动构建部署
  7. 中国金融出版社出版的2016版《综合》
  8. Excel数据分析的代码(包括列表的操作)
  9. frft雷达信号处理 论文
  10. 如何将epub电子书格式转换成txt文本
  11. Unity3D数字孪生开发笔记——软件基础篇
  12. 图像处理:以图像分类和图像深度估计为例,如何将研究想法进行迁移学习应用?
  13. Android学习笔记之ViewFlipper
  14. MPB:中科院城环所杨军组-​​基于DNA宏条形码的水体微型真核生物群落测序建库方法...
  15. oracle 00600 kccpb,ORA-00600: [kccpb_sanity_check_2]报错处理一则
  16. ZCMU-1411:喜闻乐见的a+b(大整数)
  17. 自媒体视频剪辑,怎样去掉视频中的字幕和水印
  18. 解决cannot do positional indexing on Index with these indexers [x] of type str
  19. 车型选择三级联动插件
  20. GOM引擎传奇中增加会员时间的脚本教程分享

热门文章

  1. dockone上2015.08 Docker有价值文章
  2. Linux 知识点滴
  3. laravel 目录
  4. SDN和SD-WAN有本质区别—Vecloud微云
  5. 港口物流系统设计与优化-SMU在线学习笔记
  6. 在CentOS7上编译GreenPlum5.3.0
  7. 读书笔记 - 企业精简架构
  8. Python---根据字符串导入包(importlib)
  9. AVL树---平衡的二叉查找树
  10. Smobiler实现扫描条码和拍照功能(开发日志八)