引言:本期内容一系列参考B站黑马课程以及Java入门到进阶,如有细节问题还请见谅
目录
一.数据类型
1.基本数据类型:
2.引用数据类型:
二.String类
1.创建字符串:
2.连接字符串:
3.存储原理:
4.==与equals():
5.常用的String类内的方法:
(1)截取字符串:对象.substring(int index)
(2)获取单个字符:对象.charAt(int index)
(3)按照字典序比较大小:对象1.compareTo(对象2)
三.StringBuilder类
1.构造方法:
2.类内方法:
3.链式编程:
4.源码分析:
四.StringJoiner类
1.构造方法:
2.类内方法:
上期内容将Java类的对象相关内容介绍完成,那么本期讲给大家带来Java字符串内容详解。
一.数据类型
数据类型一般分为基本数据类型以及引用数据类型。
1.基本数据类型:
数据值存储在自己的空间中,可以赋值给其他对象。eg:int,double等
2.引用数据类型:
数据值存储在其它空间中,而自己空间存储的是地址值。eg:String等就像自己定义的类实际上也是属于引用数据类型。
二.String类
首先,字符串是Java程序经常处理的对象,而字符串会作为String类进行处理,而String类是Java定义好的一个类,定义在java.lang包中,以至于其不需要导包。
1.创建字符串:
咱们在创建字符串通常方式是:
将字符串作为对象来处理,也就是类似创建类的对象一样创建字符串的对象。
同样,其实我们也是可以直接赋值的方式获取字符串的对象:
也可以创建一个字符类型地数组,根据其内容创建字符串对象:
2.连接字符串:
如果我们想要实现两个字符串的拼接,这其实仅需用"+"运算符就可以办到:
如果将字符串同其他的数据类型数据进行连接,则会将其他数据类型地数据直接转换成字符串。
注意:
括号的优先级比加号优先级高,以至于下面的代码会先执行(b + c)。
3.存储原理:
由于String是引用数据类型,所以其存储会与基本数据类型有所区别。
如果是下面的情况:
那么,JVM会先检查该字符串"abc"在串池是否存在,如果不存在就会创建新的,如果存在,则会复用这个字符串,而不会在串池重新创建新的字符串。(StringTable(串池)在堆内存中)
而如果使用new,就会在堆内存开辟空间创建String类,并通过s2记录对象地址值。
4.==与equals():
如果我们想要比较两个基本数据类型的变量的值,我们可以这样写:
而如果我们要比较两个引用数据类型呢?
嘶,为何s1 == s2可以是true呢?
这是因为上面提到的字符串存储问题,s1与s2的值都存储在串池中且s1与s2指向的是同一个"hello"。以至于会导致地址值相等,所以肯定返回true啊。
而s3 == s4是false呢?
这就需要我们回顾一下s3与s4存储的是什么了,因为利用new关键字在堆内存开辟新的两个空间,s3与s4分别对应其两个新构造出来的对象在堆内存的地址值,那两个地址值肯定是不一样的啊,所以肯定会false啊。
那么如何比较两个引用数据类型的大小呢?
这java语言基础字符串就需要Java给咱们提供的equals()方法:
下面通过表格的形式清晰观察这两个的区别:
==:对于两个基本数据类型的变量比较的是数据值,而对于两个引用数据类型比较的是地址值。
equals():用这种方法比较两个用String类定义的对象,如果两个字符串具有相同的字符与长度,那么就会返回true。
5.equals()重写:
如果想比较两个类的值,就需要将equals()方法重写,也就是将该方法从Object类中继承并覆盖。
这里我定义一个People类和一个继承People类的Student类:
这里我就是为了举例子,在People重写一个equals()方法:
1.判断是否为同一对象
2.将不是People类对象筛除
3.强转想比较的对象,并比较其成员变量
随后我把样例主方法放在People类内分析,来更深刻理解一下:
6.常用的String类内的方法:
阿玮老师说没有必要了解其内部代码,正常程序员肯定掌握内部代码的构成,因为咱们是面对对象编程,所以只需要知道方法即可。
(1)截取字符串:对象.substring(int index)
(2)获取单个字符:对象.charAt(int index)
(3)按照字典序比较大小:对象1.compareTo(对象2)
还有一些格式化字符串,在这里就不给大家介绍了(狗头)。
三.StringBuilder类
StringBuilder可以看成是个容器,创建之后里面的内容是可变的。
1.构造方法:
2.类内方法:
下面根据代码进行解析:
3.链式编程:
当我们调用方法时候,不需要用变量接收其结构,可以继续在此基础上调用其他方法:
4.源码分析:
最开始的StringBuilder默认容量为16,如果超过容量则自动扩增其(原来的容量*2 + 2),如果扩容不够,则会以实际长度为准。
下面看测试案例:
四.StringJoiner类
StringJoiner跟StringBuilder一样,可以看成容器,创建之后里面内容可变的,能够提高字符串操作效率,代码简洁。
1.构造方法:
这个相比于StringBuilder,其可以自己定义间隔符号以及头尾符号。
2.类内方法:
通过下面代码进行分析理解吧,不过多解释了:
好了,今天分享到这里了,下次会继续更新Java的相关内容,期待你的三连支持。
如果有没有理解的知识欢迎在评论区留言。
你的关注也是我更新的动力,同时也希望看看我的Java专栏以及其他专栏,多多支持。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/24944.html