JAVA中的String源码浅析。

本文深入剖析了Java中String类的源码,包括其成员变量、构造方法及常用对象方法。探讨了String如何通过char数组存储数据,实现不可变性和序列化特性,以及构造方法和成员方法如length、isEmpty、charAt等的实现细节。

String源码浅析

本文章将从Spring的成员变量、构造方法、以及一些常用的对象方法进行简单的分析。也可以作为面试的时候,对于面试官所问的“看没看过JDK源码”类似的问题。参考本文章进行回答。

String类成员变量

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
1.从上图的源码可以看到String存储字符串的方式是内部封装了一个char类型的数组进行数据的存储。并且该数组是被final修饰的说明String对象是不可变的。
2.第二个成员变量是一个int型的hash值,所以在每次创建一个String对象时都会为该字符串生成一个hash值。
3.String类实现了Serializable接口,所以拥有一个序列化ID,serialVersionUID。

构造方法

1.无参构造
在这里插入图片描述
2.有参构造
(1)将char类型数组赋值给String对象的value属性。
在这里插入图片描述
(2)将一个String类型的对象的value值和hash值赋值给一个新的String对象。
在这里插入图片描述

成员方法

1.length方法
在这里插入图片描述
2.isEmpty方法
在这里插入图片描述
3.charAt方法
在这里插入图片描述
首先将参数和value数组的长度进行对比判断是否下标越界,若越界则抛出StringIndexOutofBoundsException(index)异常;不越界则返回数组索引位置的数据。

4.getChars方法
在这里插入图片描述
指定原数组的开始位置(srcBegin),结束为止(srcEnd)和目标数组(dst),目标数组开始位置(dstBegin)来进行从当前字符串复制到目标字符串的方法。

5.equals方法
在这里插入图片描述
想必大家都知道String类重写了Object的equals方法,该方法的第一步还是先进行两个对象的地址值比较,若地址值相同则直接返回true。若地址值不相同,则判断对象是不是String类型,若是String类型对String对象的数组进行遍历,并且逐一比较他们的值,若值相同则返回true,若不相同则放回false。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值