00:00
大家好,我是海波老师,我们继续来讲Java中的字符串,我们这里拷贝一个新的代码复制一下,然后呢,把它改成二就可以了,点击OK,然后呢,把我们下面的东西啊,咱们全都给大家去掉啊,好,去掉前面讲过了,字符串是可以进行拼接的,咱们来看字本代码,我们写上一个叫string,我们叫S,它等于空自物串。然后呢,我负循环,我们这里写上它,我们叫int I等于零,然后I小于我们100,然后I加,加好了,写完了,写完了以后呢,我怎么写呢,叫S,它等于S,再加上I,同学们还记得我们的这种用法吗?我们可以将一个字符串跟我的一个数字用我的加号进行拼接,那么这样的话会把我的数字转成字符串,那么就意味着我们第一个它是一个零,对不对,它是一个零,零后面呢是个一,后面是个二,后面是个三,后面是个四,以此类推,点点点点点,它会把我们从零到99的数字是不是全都拼接在一起啊,好了,我们现在把它打印一下啊,把这个S放过来,然后呢,我们现在运行一下。
01:06
运行以后看结果,你会发现跟我们刚才说的完全是一致的,它就是把我们从零到99的这个数字,它一个一个拼接到我当前的字符串当中,就是这意思,本身啊,代码是没有任何问题的,但是我们前面给大家讲过,我们用这个加号啊,它会频繁的去创建字符串,还记得吗?我们说过了,如果你写个A,你写上一个B的话,其实你最终它的字符串就变成了什么,我们的AB还记不记得I就是这个道理。你想想吧,那你这样的话,我们S加I会出一个,然后再加I又会出一个,再加I又会出一个,那么它就会创建很多的字物串对象,其实啊,这种频繁的拼接就会导致大量的植串的生成,效率其实本身也并不高,诶老师,那我改成new的方式行不行呢?你改成new的方式其实肯定是不行的,因为你这样的话效率会更低,对不对?哎,老师啊,那使用咱们之前的那个叫con呢,我们之前不是讲过一个我们的拼接字符串有个方法叫con吗?Con啊这个方法,这个方法呀,其实也不行,为什么呢?因为这个方法的本质呀,它也是每次执行以后创建一个新的植物窗。
02:14
诶,老师,那怎么办呢?能不能把它优化一下,让这个拼接字符串的效率高一些呢?Java确实提供了一个新的字符串的类,用于这种场合帮助我们优化字符串的操作效率,这个类我们称之为叫使builder。它就表示构建字符串。嗯,好了,哎,老师,那这个我们该怎么用呢?我们把这个给它注掉,注掉以后大家看一下,我们写上一个叫string builder,它是一个我们的类,所以呢,我写上一个S,它等于new,叫string builder。好了,这样的话,我们这个类的对象就准备好了,准备好了以后跟我之前是一样的,来我们拷贝一下,拷贝之后呢,我们现在就准备把我们的数字往这个字符串里面放,所以S点它有一个方法叫aend,这个方法呢就可以把I放进去就行了,放进去以后,然后呢,我们直接打印,把咱们当前的使用build呢,它有一个方法叫做s.to string可以变成我们的字符串,所以我们运行一下,运行之后大家会发现结果跟刚才应该是没有区别的,但是这种方式要比之前它的效率要高,为什么呢?因为啊,它其实是在底层用数组的方式来实现我们制符的拼接,而不是构建大量的字串,所以这个效率呢就比之前要高不少,而且我们的这个类啊,使用起来还是比较简单的,它提供了更多操作字符串的方法,比方说大家看一下,把这个先做掉,做掉以后来我们写上它叫string builder来复制一下复。
03:49
字以后,我们写上它叫s.endend之后我就写上它,咱们叫ABC就行了,后呢,我们这边打印一下,我们写上一个s.to string,然后呢,我们现在给它运行一下,运行之后呢,大家会发现我们的结果呢,就是ABC,那那么接下来呢,我们就可以访问它的一些方法了,比方说S点我们的lengths,这个lengths呢,就是我们当前的长度,所以我们来打印一下,打印以后大家会发现我们当前的长度呢,就是我们的三没有任何的问题,对不对,除了这个方法以外,还有一些别的方法,比方说我们这里的S点,我们的reverse,同学们什么意思啊,反转呀,把咱们当前的字符串给它进行反转,诶,这个还是不错的啊,咱们来运行一下,咱们看看结果,咱们运行你会发现现在就变成了我们的CBA,对不对,哎,这是一个反转操作。
04:44
好了,我们再来S点,我们这里还有很多别的一些方法,比方说我们的叫insert,咱们叫插入,往字符串的指定的位置给它插入啊,那我现在写上一个我们的一,我写上一个我们的B吧,写完了以后我们这里呢,给它来啊,我们一呀,那就是AB,那是零,这是一,我往这来插入一个,所以我们写上它运行。
05:10
运行以后大家会发现我们cbaba没错吧,同学们把这个D插入到我一的位置,不就是这样吗?所以啊,这个方法名还是很好理解,对不对?这个对象呢,其实对于我们来讲用起来还是非常方便的,所以我们在频繁拼接字符串的场合下,咱们用当前的这个使用build这个类其实就可以了。
我来说两句