一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第21天,点击查看活动详情。
哈喽,各位小伙伴们好,我是喵手。
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流学习,互相学习,才能成长的更快,对吧。
我是一名java开发,所以日常接触到最多的就是java啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。
小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!
一、前言
论前几期啊,我们是分别讲了Object类、Date类、FormDate类、Calendar类及System类,不知道大家掌握的如何,如果没有及时巩固的同学,可以看我这里,我给大家罗列了下,快速学习通道,只希望能帮助到大家更好的学习与成长,这就是我写作的初衷。
接下来,我要给大家讲一个新类了啊。这个类在以往的文章都有使用到,那就是StringBuilder类,比如我们最常用的就是通过它append(),对吧。那具体它还提供些什么函数呢?分别有啥作用,最常用的方法有哪些?这些你们都知道吗?如果不清楚,可以看看我接下来演示的,我会做到句句重点!绝不废话。
二、String字符串拼接问题
说起这个类前,我得给先大家讲讲,字符串拼接问题。我们都知道,String类一旦初始化赋值,其对象内容是不可改变的。其java-API文档中是这么描述的:字符串是常量,它们的值在创建后不能被修改。
所以当你对String 类型字段进行字符串拼接时,它都会在内存中开辟一个空间来存放一个新的对象。例如如下实例。
实际演示代码如下:
@Test
public void test() {
String str = "abd";
//str拼接
str +="d";
System.out.println(str);
}
实际运行截图:
我们可以看到字符串成功拼接上了,其实内存已经开辟了“abd”、“d”、“abdd”三块内存空间了、也就是三个对象。最终str指向拼接后的新字符串对象,即“abdd”。我给大家画个示意图,这样你们就好理解了点。
具体示意图如下:
如上图可知,如果是对一个String类型字符串进行字符串拼接,每次拼接,都会构建一个新的字符串对象,由此可见,拼接耗时耗内存浪费空间。
那有什么办法在针对字符串拼接上有更优化的方式方法么?有啊,为了解决这种费时费内存的字符串拼接方法,java提供了StringBuilder类 (java.lang.StringBuilder),由此它就诞生了,那它究竟是怎么优化掉这一过程的呢?
三、StringBuilder类
在查阅官文对Stringbuilder类的介绍时,可以发现它又被称为可变字符序列。啥意思呢?就可以理解成一个可以改变序列的长度和内容的可变容器。
StringBuilder类是一个字符串的缓冲区(可以理解成一个容器)。容器可以装很多字符串,并且还能对这些字符串分别进行各种操作。
StringBuilder内部拥有一个数组,它是用来存放字符串内容的;当你进行字符串拼接时,即直接在数组中加入拼接的字符串内容即可。StringBuilder会自动对数组的长度进行扩容,默认是16字符空间,超过16字符即会触发自动扩容机制。
如下演示一下是如何具体数组存放字符的:我就以“hello”字符串作为演示。
如果是hello + World 拼接的情况呢?
如上图可见,它就是像数组结构一样,直接一个一个字符存好,然后对需要返回的时候,直接将这整个数组返回。
这样图文并茂的方式,我希望大家会喜欢,能接受,能吸收的更快,方能学的更好。
... ...
好啦,以上就是对StringBuilder类的概述及与String字符串拼接由来的所有内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。
再则,下期我讲结合实例具体演示StringBuilder类的构造函数及常用方法,多维度讲解我对它的理解与认识,从而带动你对它的自我理解。传送门:java零基础入门-StringBuilder类(下篇)之实例演示。
四、结尾
教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!
wished for you successed !!!
-------------------------------------------
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
-------------------------------------------