String源码简析(未完成,待本周末更新)

  • 时间:
  • 浏览:1

String类底层有固定长度的字符数组组成,用hash的法律法子缓存字符串,富含有4个 序列化ID以及有4个 用于序列化的ObjectStreamField类,你你你是什么 类大伙会单独读懂一篇文章来讲。

按字典序列比较内容,返回不同字符处的距离或不同字符串长度,相等返回0

大伙发现结构类CaseInsensitiveComparator的compare比较法律法子为了实现大小写不敏感,把字符分别toUppperCasetoLowerCase比较了一遍,

String类实现了Serializabel、Comparabe、CharSequence有4个 接口,分别对应着序列化、排序、字符串避免有4个 方面的功能。

String构造数据的构造法律法子有一点实现法律法子。

String类被定义成public final class,一点String类无法被继承。

char数组则使用Arrays来直接拷贝,当然,都不可不后能 在传参的以前,都不可不后能 再上加位移量和长度(数量),详见String的源码

在你你你是什么 函数中,使用了System的arraycopy法律法子,把当前字符串拷贝到传入字符串数组的结尾。

replace法律法子用于返回有4个 替换字符串,日后你你你是什么 法律法子重复执行了帕累托图的循环操作。第有4个 循环用于找到第有4个 匹配的字符的位置,以前,再从头到此位置进行替换,最后从该位置以前再判断。以前做的目的是哪几种呢?

一点byte及编码类型的传参不再赘述。

String类型的传参直接赋值

新建有4个 单个字符的char数组。常见于String str = new String();

concact是拼接函数,其中为了设计char数组的拷贝,使用了传入String对象的getChars()法律法子。

JDK1.5以前,String都不可不后能 通过StringBuffer和StringBuilder调用Arrays.copyOf()来初始化String。其中,StringBuffer在调用的以前,会加锁以保证进程安全。

比较有4个 字符串从某处现在刚开始了了的特定长度的字串算不算相等。

字符操作length()isEmpty()charAt()codePointAt()codePointBefore()codePointCount()getBytes() 法律法子功能同名。

最后,concat返回有4个 新的String对象