java学习回顾---字符串练习和Stringbuffer,StringBuilder

练习1 去除字符串两端的空格

在这里插入图片描述
思路是前面的只要是空格,起始角标就往后移,后面的只要是空格,终止角标就往前移。分割字符串的时候,注意末尾是终止角标+1,因为分割会停在终止角标,这样终止角标的字符就会漏掉,为了避免就要让分割停在终止角标+1。

练习2:将字符串反转

思路:将字符串转换成数组。将数组反转。将数组转换成字符串。
在这里插入图片描述
如果想实现部分反转,只需多设置两个参数即起始角标和终止角标。
在这里插入图片描述

练习3:获取一个字符串在字符串中出现的次数。

思路一:定义一个计数器。从0角标开始查找出现这个字符串的地方,有的话就计数器加一,没有的话就输出0。让字符串从字符串结尾的地方(出现字符串的角标加上字符串的长度可算出)到字符串末尾成为一个新的字符串,在新的字符串里继续查找。循环直到找不到字符串输出次数。
在这里插入图片描述
思路2:定义一个计数器。从0角标开始查找出现这个字符串的地方,有的话就计数器加一,没有的话就输出0。从字符串结尾的地方(出现字符串的角标加上字符串的长度可算出)继续查找。循环直到找不到字符串输出次数。
在这里插入图片描述

练习4

在这里插入图片描述

在这里插入图片描述

内循环做的事:比如现在短的字符串是“abcd”,第一次循环只有abcd一次,然后内循环结束,外循环一次。第二次内循环,此时内循环的起始角标还是0,但是终止角标已经是末尾-1。内循环依次得到“abc”,“bcd”从而得到子字符串的所有排列。然后外循环加一。第三次内循环,起始角标0,终止角标为末尾-2。内循环依次得到“ab”“bc”“cd”。就这样循环下去,直到遇到子字符串被长字符串包含的情况,此时输出子字符串,即两个字符串最大相同子串。

Stringbuffer

在这里插入图片描述
Stringbuffer实际上是一个容器,可以理解成一个盆子,不管往里面塞什么东西,这个盆子还是这个盆子,因此当要往这个盆子塞东西的时候没必要创立新的对象。New一个stringbuffer相当于创立了一个新的盆子。

存储

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

删除

在这里插入图片描述

在这里插入图片描述

获取

在这里插入图片描述

修改

在这里插入图片描述
在这里插入图片描述

反转

在这里插入图片描述

将缓冲区的指定内容存入数组的指定位置

在这里插入图片描述
在这里插入图片描述

StringBuilder

StringBuilder是StringBuffer的替代品
在单线程的时候用StringBuilder会更快,但是在多线程的时候还是要用StringBuffer(自带锁,安全性更好),多线程的时候也可以用StringBuilder但是要自己加锁避免出现安全问题。

猜你喜欢

转载自blog.csdn.net/weixin_46428711/article/details/111051084