前言:以下是Java中String类的知识点与一些常见问题和注意事项,如有讲解不妥,请见谅!
目录
3.StringBuilder 和 StringBuffer 和 StringJoiner
1.String类的创建及常见API
先大致了解一下有哪些知识:(如图)
(1)String类的四种创建方式:
1.直接创建:
2.通过对象创建:
3.将字符数组转变成字符串
4.将字节数组转变成字符串
以上是String类的创建的四种方式,当然有人会问字符数组 / 字节数组可以转化成字符串,那么能不能把字符串转化成字符数组 / 字节数组呢?(当然可以!)
补充:字符串转化成字符数组 / 字节数组
1.字符串转化成字符数组:
2.字符串转化成字节数组:
注:字符串和字节数组的相互转化是ASCII码和字符的相互转换!
(2)String类的常见API
可以大致看一下常见的API:(如图)
由于如果展开讲解篇幅会过长,详情可以浏览------------------->java中String类常用API-CSDN博客
2.字符串中的注意事项
大致了解一些有什么:
(1)字符串在内存中储存的注意事项:
在上面我们已经了解了字符串的创建有四种方式,其中有直接创建(第一种)和通过对象创建(第二种),那么它们有什么区别呢?
----直接创建:它是创建一个字符串常量并储存在字符串常量池中的(在堆区)(如图)
----通过对象创建的字符串:它是创建了一个字符串对象并存储在了堆区中(如图)
根据上面的两幅图片我们就可以知道直接创建(第一种)和通过对象创建(第二种)的区别了!
3.StringBuilder 和 StringBuffer 和 StringJoiner
先来看StringBuilder, 大致了解一些有什么:
StringBuilder
(1)StringBuilder的介绍:
StringBuilder就是一个存放字符串的容器,你可以把字符串存储在这个容器中,然后通过API 或 其他方式对其中的字符串进行操作。
(2)StringBuilder的常见API(以下的对象都为sb是因为官方也这么命名)
1.append() ---- 作用:向这个容器中添加内容(加在最后)
注:如图可以看到我们可以添加所有基本类型,其实是append()将它们都进行了转化。
2.length() ---- 作用:求容器中的字符串长度
注:别忘记空格也算一个字符哦!
3.reverse() ---- 作用:将容器内的字符串反转
4.toString() ---- 作用:将容器里面的内容转变为字符串格式
从上面几个案例的结果我们是看不出来有什么区别的,但是注意的是,我们创造的对象的类型都是StringBuilder类型的,但是我们要把他变成字符串的格式才能更方便之后的使用。
StringBuffer
再来看StringBuffer, 大致了解一些有什么:
(1)StringBuffer的介绍:
StringBuffer就是一个存放字符串的容器,你可以把字符串存储在这个容器中,然后通过API 或 其他方式对其中的字符串进行操作。(其实和StringBuilder一样)
它的用法和StringBuilder大差不差,所以也就不在再次解释了,主要讲解一下replace()和delete()
(1)replace() ---- 作业:更换对应的索引范围的内容
注:start索引是包含的,但是end索引是不包含的,及到end - 1的索引位置。
(2)delete() ----作用:删除对应索引范围的内容
注:start索引是包含的,但是end索引是不包含的,及到end - 1的索引位置。
当然StringBuilder 和 StringBuffer还有许多其他的常用API ,这里也就不举例了,有兴趣的朋友可以自己上网了解!
那么有人会问了StringBuilder 和 StringBuffer这么相似,那有什么区别呢?区别还是有的,但是如今还不好解释(等你学习的更多了之后就会知道了,但是这里还是列举一下它们的不同)
不同:StringBuffer几乎所有的方法都使用synchronized实现了同步,线程比较安全,在多线程系统中可以保证数据同步,但是效率比较低,而StringBuilder 没有实现同步,线程不安全,在多线程系统中不能使用 StringBuilder,但是效率比较高。
StringJoiner
最后来看StringJoiner, 大致了解一些有什么:
StringJoiner的作用:快速的连接添加到容器里面的内容。
直接看案例吧!
注:在创建对象sj的时候括号里面第一个参数是连接符,第二个参数是开头字符,第三个参数是结尾字符(当然开头和结尾可以省略,只填连接符)
以上就是String有关的一些知识点,希望对你有帮助!!!