96SEO 2026-02-20 06:05 7
本节内容是我们《API-常用类》专题的第二小节了。

本节内容主要讲String类
不同方式创建String类对象的区别以及String类常用方法的演示。
up希望通过这篇博文的知识分享能够帮助大家快速上手并理解java
点击侧边栏可以跳转。
良工不示人以朴所有文章都会适时改进。
大家如果有什么问题都可以在评论区一块儿交流或者私信up。
CSDNCyanRA9等等。
每一个字符串对象都是常量。
字符串中的字符使用unicode编码一个字符不区分中英文均占两个字节。
java中用String类描述字符串如下图所示
可以看到String类用final关键字修饰因此String类是不可被其他类继承的并且通过String类中的属性value及其源码描述我们可以得知String类的底层实际仍是字符数组byte[]。
也就是说new出的String对象在堆空间中该对象的空间里有value属性用于存放字符串的内容实际是指向常量池的地址。
同时该value数组也使用了final关键字修饰我们在面向对象专题详解过final关键字当final关键字修饰引用类型时不可更改其引用的指向即不能更改其保存的地址值。
接下来我们再来看看String类的“家庭关系图”。
首先String类属于java.base模块java.lang包下并且实现了SerializableComparable等接口。
如下图所示
可以看到String类除了继承自Object类之外还实现了许多接口。
这么多接口中大家只需要记住关键的两个接口——①Serializable接口实现该接口使得String类型可串行化串行化后String类型可以进行网络传输。
②Comparable接口实现该接口使得String类型可以进行“比较”的操作。
有些还是过时的。
当然我们就挑几个重点的常见的构造器给大家演示一下即可。
该构造器可以初始化一个String对象使其指向一个空字符序列。
该构造器可以初始化一个String对象并将指定字节数组中的数据转化成字符串。
该构造器可以初始化一个String对象并将指定字符数组中的数据转化成字符串。
该构造器可以初始化一个String对象并将指定字符数组中的指定数据转化成字符串。
该构造器可以初始化一个String对象使该对象实际指向的字符串常量与传入的字符串形参相同相当于是形参的一份拷贝。
csdn.knowledge.api.string;public
String();System.out.println(str_0);System.out.println(--------------------);//2
String(bytes);System.out.println(str_1);System.out.println(--------------------);//3
String(value);System.out.println(str_2);System.out.println(--------------------);//4
4);System.out.println(str_3);System.out.println(--------------------);//5
yyds!);System.out.println(str_4);}
String类在实际开发中的使用场景非常多java在底层提供了针对String类的优化即可以不通过构造器来创建String对象。
而是直接赋值一个字符串。
使用这种方式来创建String对象jvm会先从常量池中查看是否有Cyan字符串的数据空间若有令引用变量直接指向该空间若无重写创建Cyan的数据空间并令其引用变量指向它。
因此str_0引用最终直接指向的是常量池中Cyan常量的空间地址。
使用这种方式来创建String对象jvm会先在堆空间中给String对象开辟空间这片空间中维护了value数组这一属性该属性指向常量池的Cyan数据空间。
若常量池中没有Cyan则重写创建Cyan数据空间并让value引用指向该数据空间。
最后将该对象堆空间的地址值返回给str_1引用。
因此str_1引用最终直接指向的是堆中的空间地址。
当我们以两个字符串拼接的形式来创建字符串对象时jvm不会在常量池中分别创建Cyan字符串常量和RA9字符串常量再把它们拼接起来。
而是直接在底层优化先把两个字符串拼接起来之后直接去常量池中寻找有没有拼接起来的这个字符串常量如果有直接令该引用指向这个字符串常量的空间地址如果没有则先创建该字符串常量再让引用指向这里。
当然我们已经学过了Debug此时我们就可以直接通过Debug来验证我们的结论如下图所示
在IDEA类图中我们可以查看String类中的方法如下GIF图所示
可以看到String类中的方法真是多得⑧彳亍不过你放心up从这些方法中挑选了一些我们经常用到的方法并根据它们的功能将其分为了“判断功能”“获取功能”以及“转化功能”三部分。
如此一来大家就可以放心食用
该方法可以判断当前字符串与指定对象的内容是否相同实际在底层比较的就是字符串的内容会区分大小写。
该方法可以判断当前字符串与给定字符串的内容是否相同不区分大小写。
csdn.knowledge.api.string;public
cyan;System.out.println(\Cyan\字符串与str_0字符串的内容相等吗
Cyan.equals(str_0));System.out.println();//2
anotherString)System.out.println(\Cyan\字符串与str_0字符串的内容相等吗
Cyan.equalsIgnoreCase(str_0));System.out.println();//3
prefix)System.out.println(str_0字符串是否以\cy\开头
str_0.startsWith(cy));System.out.println(str_0字符串是否以\Cy\开头
str_0.startsWith(Cy));System.out.println();//4
isEmpty()System.out.println(str_0字符串是否为空
第一次出现的索引默认从第0位开始。
若返回-1则表示没有该字符串。
返回两个字符串对象的比较结果——若相等返回0若不相等从两个字符串的第一个字符开始比较返回第一个不相等的字符的ASCII码差值。
当较长字符串的前面部分恰巧是较短的字符串时返回两个字符串的长度差。
获取从索引beginIndex开始到索引endIndex之间的字符串区间为前闭后开。
csdn.knowledge.api.string;public
best.;System.out.println(当前字符串str_0
str_0.length();System.out.println(str_0字符串的长度为
length);System.out.println();//2
str_0.charAt(5);System.out.println(str_0字符串中索引为0的字符是
ch_0);System.out.println(str_0字符串中索引为5的字符是
str_0.indexOf(e);System.out.println(字符\e\在字符串str_0中首次出现时的索引为
str_0.indexOf(are);System.out.println(字符串\are\在字符串str_0中首次出现时的索引为
7);System.out.println(从字符串str_0索引为7的地方开始找字符\e\在字符串str_0中首次出现时的索引为
str_0.lastIndexOf(t);System.out.println(字符\t\在字符串str_0中最后一次出现时的索引为
best.);System.out.println(compareTo方法返回0说明俩字符串相等:
79.System.out.println(\W\和\Y\的ASCII码差值为
俩字符串长度不相同但长的字符串的前一部分与短的字符串相同。
int
king!.compareTo(str_0);System.out.println(str_0字符串与传入字符串的长度差值为
i_6);System.out.println(传入字符串与str_0字符串的长度差值为
//best.System.out.println(str_0字符串中从索引11开始到结束的字符串为
str_1);System.out.println();//8
//[7,10)——注意区间的格式。
System.out.println(str_0字符串中从索引7到10不包括10的字符串为
以传入的字符(串)为标准来切割原字符串返回切割后的字符串数据以String类型的数组作为接收。
原字符串不受影响。
format部分”即输出格式控制是包含占位符的String类型。
形参“Object...
args”部分即要输出的参数。
占位符由后面的参数按照顺序来一一替换。
%f这些就是C语言中的printf语句用的那几个这里不再赘述。
csdn.knowledge.api.string;public
bytes[i]);}System.out.println(-----------------------);//2
chars[i]);}System.out.println(-----------------------);//3
String.valueOf(123.6666);System.out.println(int类型转String类型
str_1);System.out.println(char类型转String类型
str_2);System.out.println(double类型转String类型
str_3);System.out.println(-----------------------);//4
str_5);System.out.println(-----------------------);//5
{System.out.print(string);}System.out.println(\n-----------------------);//6
str_7.trim();System.out.println(去掉两端空白字符前的字符串
str_7);System.out.println(去掉两端空白字符后的字符串
str_8);System.out.println(-----------------------);//7
).concat(programming!);System.out.println(拼接后的字符串str_10
str_10);System.out.println(-----------------------);//8
you!;System.out.println(大写之前的字符串
str_11);System.out.println(大写之后的字符串
str_11.toUpperCase());System.out.println(-----------------------);//9
toLowerCase()System.out.println(小写之前的字符串
str_11.toUpperCase());System.out.println(小写之后的字符串
str_11.toUpperCase().toLowerCase());System.out.println(-----------------------);//10
hobby);System.out.println(sss);}
以上就是关于String类的全部内容了。
希望这篇博文的内容分享可以帮助大家对String类有进一步的认识。
同时关于String类的常用方法up都做了较为详细的演示和批注大家可以多回来看看。
API专题的下一小节我们来讲讲常用类StringBuilder和StringBuffer类不见不散。
感谢阅读
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback