00:00
下面呢,我们就按照这个顺序呢进行讲解,首先咱们看跟字符串相关的类,那首当其冲我们就看到这个string string,这是咱们最先接触的一个类了啊,这呢是我从这个API当中呢,把它截出来的这样一个内容,就是这个string,它在API中声明的时候呢,首先是一个class,这个class呢生明为一个final啊,这里一看到final就得知道什么意思,什么意思啊,诶不能被继承了,就是这个类的话呢,我们关于这个字符串哈,我在这个string当中已经定义的很充分了啊,你用不着去继承,再给我进行功能的扩展了啊,我能考虑到的方法我都给你写上,用不着你再去继承,所以呢,我就final了,大家要用字串你就直接呢用它就行,不要去继承啊,这是它的一个显示的一个意思,同时的话呢,我们看到它实现了几个接口,一个呢叫slaable啊,就叫comparable啊,这个差sequence啊,这叫字符序列了啊,那么每一个接口呢,我们说接口呢,是定义的一个。
01:00
规范,那么我们这个率呢,实现了相应的接口,那相当于它就具有那个规范定义的相应的一些功能,哎,我们也可以去提一提,下边呢,又提到了,在这个string的内部呢,我们是定义了一个差形的数组啊,这个差形数组就是我们所说的string呢,你是一个字符串,字符串字符串就是字符构成的一个串,比如说这个字符串呢,就叫做ABC。那么ABC就分别是一个字符,实际上呢,就存在一个查询数组当中。啊插异数组当中,咱们前面讲课的时候,讲数组的时候呢,稍微给大家也提过数据结构,哎数据结构呢,就涉及到底层数据的一个存储了,像ABC呢,你就要存储啊,这个典型的存储结构呢,一个呢叫顺序存储,那其实就数储,另外呢叫链式存储,咱们后边讲这个集合的时候呢,诶给大家去说一下,这个叫链式存储啊,那你现在呢,是这个string,哎,这个它呢,就得考虑从这俩里选一个,或者其他有些变形啊,变形呢也是基于这两个去变形的,那么对于咱们string来讲呢,它选择的是用这种哎数组的方式进行存的,在底层当中就是一个挨一个去放啊,那典型的实现呢,就是用数组去盛装啊,所以呢,我们string的底层呢,就是放到这个数组当中了,这个数组呢,声明成是一个final的。
02:19
什么意思,这个数组呢,是一个引用数据类型,哎,我呢回头是不是给他回去赋个值啊,那我final一下,说明它就是一个常量了,就是我们这个Y6这个数这个变量它有个地址值,这个地址值呢,是不是不能被修改啊,哎,对,就这呢,一定程度上体现了我们string叫不可变性。不可变性不可不可变的特性啊,不是不可变性啊啊这断句得断的断对哈,不可变性是吧,这样啊哎一会呢,咱们重点来说一下什么叫不可变性啊呃,字符串呢是常量用双引号引起来,这咱们一开始就知道啊这呢创建之后呢,不能修改,说的还是不可变的这个特征,嗯,后边有个哈希值啊这个咱们就先不过多去关注这个了,成把刚才呢,咱们说到这几个事儿呢,咱们来描述一下啊,同时呢,重点给大家说一下所谓的叫不可变性。
03:20
啊关掉,然后呢,这块新建一个module对零三。新建一个包,新建一个咱们关于字符串的一个使用我叫string的一个test。好,这个呢,我们在这标识一下啊,就是string,哎,做一个使用这呢,咱们就用一下单元测试方法了,哎,Test,我这写个TEST1,哎把这个光标放在这al enter,我们添加一下unit,诶这个呢是我们一个新的一个libraries了,所以添加完以后呢,你看它没有,呃,这个显示到我们这个modu下边啊,在这个eternal libraries呢,这块呈现了,诶在咱们这个idea当中呢,就是你凡是使用到一些这个呃炸包啊,一些API啊,这块我们都会呈现在统一的一个位置,都放在这了,嗯,那你在这个项目当中呢,呃,后边呢,我们会集成很多的一些第三方的一些框架,呃,那框架的话呢,它就都放在这儿了,你可以在这里边呢去引用一下,表示你可以去使用啊好,这个呢就在这儿了,嗯,在这里边儿呢,我们说一下刚才咱们提到的这个事情,嗯。
04:43
咱们提到了这个string啊,String呢,它表示的是叫字符串,使用一对这个双引号啊来表示,哎,引起来呢进行表示的,这是第一个事啊,呃,这或者说一个概述了,然后接下来呢,我们提到了这样的几个问题,首先呢,这个string它呢是声明为final的,这个大家得清楚啊,不可被继承,那这第一个第二呢,我们说这个string刚才也看到了,它呢实现了几个接口,第一个呢叫serialable,这个咱们直接呢。
05:21
我ctrl shift t一下,在源码当中,咱们先去看啊,这个把这个勾勾一下啊,双击过来STEM它实现了一个接口叫serial liable,实现了serial liable这个接口,咱们就先暂且说一下,这个sial liable呢,Able这是英语的一个后缀哈,就是可什么什么的,对吧?呃,Seriousialize这是它的一个本身的一个单词啊,叫序列化,那么这个able呢,就是可序列化的,哎,可序列化什么意思,表示先写上啊,表示这个我们这个字符串是支持序列化的,这个序列化呢,咱们等到IO流的时候。
06:10
IO流在这呢,我们会讲数据,呃,讲这个对象流,对象流呢,我们就要说一下,这个叫序列化了,简单来说就是咱们这个,呃,咱们说面向对象,咱们体验的这个数据呢,都是封装到对象当中了,这个对象呢是可以进行传输的。什么叫对象可以进行传输,比如说我现在内存中有个对象,这个对象呢,我可以通过网络的方式呢,发给你,到你这呢,你再把这个对象呢,再给它还原回来,还原为内存中的一个对象,传输的过程当中呢,咱们使用的是这个这个流了啊呃,字节的方式呢,给它去传,传到这儿呢,你再还原回来,那么这个对象呢,默认情况下呢,是不能够传输的,就跟你可以夸张点去想一个人,你现在呢,突然想去美国,你不是飞过去的是怎么着呢,把你打成一个字节流是吧?啊你就哎通过这个网络的方式呢,就传过去了,到那的时候呢,你再还原回来啊,你可以夸张点这样去想象啊,默认情况下人不能这样做,但是呢,如果给你贴个标签,说你是可序列化的,那你就可以这样做了啊,那沿ID呢,像这个string啊,String的话呢,如果我们不让他实现这个接口,它就不能够通过网络的方式把这个字串传给传到对方啊,要想能做这个事儿,诶,我们得让他去实现这个接口啊,详细的先不多说咱。
07:29
咱们后边呢,讲到这个L流的时候呢,再说这个序列化的问题,这是这个这个事儿,嗯,另外呢,咱们也看到这个string呢,它还实现了叫comp接口compar啊,其实大家呢,也知道这个事了啊,Able可什么什么的compar比较comparable呢。可以比较的,可以比较比较什么呢?比较大小呗,哎,所以说呢,你实验了compare接口表示呢,我们string可以比较大小。
08:06
那可以比较大小,这个可以比较大小的事,咱们这不正好说是在这块去说嘛,这不就compareable吗?啊到这呢去讲啊,行,这是这个问题,然后接下来第三个点,刚才我们提到了这个string呢,它在内部定义了,定义了什么呢?叫final的叉型数组,叫value,哎,这个数组我们说用于存储字串数据,我们string你是通过这种双引号的,乃至于说呢,咱们还可以通过new的方式啊,New里边你也得得用个双引号去表示一个字符串了,这个字符串这个数据本身呢,在底层就是用查询数组来存的啊,查询数字来存的就是描述的这样一个问题,好,这个加了个final表示呢,我们这个数组呢,是不可以再被重新赋值了。啊,不光这个数组不能被重新赋值,你这个数组的元素也不能再被修改了。
09:08
把这个事我们统一称为什么呢?叫string。它代表一个。代表一个什么呢?叫不可变的字符序列啊,你可以简称呢,我们这个string呢,它叫不,它的这个特性呢,叫不可变性,就刚才说的不可变,不可变的特性是吧?嗯,别别别这样断哈,嗯,不可变的特性怎么叫不可变这个呢,是需要咱们说清楚的啊,它的具体的体现,咱们下边来举例子。
我来说两句