StringBuffer是一个容器,且长度可变,

可以直接操作多个数据类型,数组只能操作一种

最终结果为字符串

字符串的原理就是通过该类实现的

-----------------------------------------------

1.添加

两个主要的方法:

StringBuffer append()-->将指定数据作为参数添加到已有数据的结尾处

看main函数中定义了sb,然后定义了sb2 =sb.append(34);

但是,当我打印这两个数据时,它们的值却是相等的!!!,都是34

为什么呢?

按常理说sb里面应该什么都没有啊

这个问题用面盆理论来解释:

sb就是面盆,面盆里面加了面,还是面盆啊,加了水,也还是面盆啊...

stringredisTemplate delete无返回值 stringbuffer append返回值_数据

---------------------------------------------------------------

sb.append("abc").append(true).append(34);

方法调用链,方法返回的是本类对象,还可以调用这个方法

------------------------------------------------------------

insert()-->append只能在字符串结尾处添加,而insert可以插入

sb.insert(index,数据);

 

stringredisTemplate delete无返回值 stringbuffer append返回值_数据_02

 

stringredisTemplate delete无返回值 stringbuffer append返回值_数据_03

--------------------------------------------------------------------

2.删除

上面append,insert都是添加;下面说删除

StringBuffer delete(start,end)-->删除的内容,包含start,不包含end

StringBuffer deleteCharAt(index)-->删除指定位置的字符

--------------------------------------------------------

初始化StringBuffer,删除1--3(包含1,不包含3)a0 b1 c2 d3 e4

即输出ade

stringredisTemplate delete无返回值 stringbuffer append返回值_数组_04

用这个方法清空缓冲区

sb.delete( 0,  sb.length()  );

 

stringredisTemplate delete无返回值 stringbuffer append返回值_数组_05

---------------------------------------------------------

删除指定位置上的某个字符

stringredisTemplate delete无返回值 stringbuffer append返回值_数组_06

------------------------------------------------------------

3.获取

上面讲了增、删,下面讲查(获取)

char charAt(int index)

返回此序列中指定索引处的 char

 

int indexOf(String str)

返回第一次出现的指定子字符串在该字符串中的索引

 

int lastIndexOf(String str)

返回最后一次出现的指定子字符串在此字符串中的索引

 

String substring(int start, int end);

返回一个新的 String,它包含此序列当前所包含的字符子序列。

注:返回的类型是字符串类型的

 

stringredisTemplate delete无返回值 stringbuffer append返回值_数据_07

-----------------------------------------------------------------

4.修改

修改原来字符串的内容

replace(int start, int end, String str)--包含首,不包含尾的原则,str为替换的内容

使用给定的字符替换此序列的子字符串中的字符。

 

stringredisTemplate delete无返回值 stringbuffer append返回值_字符串_08

 

stringredisTemplate delete无返回值 stringbuffer append返回值_字符串_09

 

-----------------------------------------------------------------

void setCahrAt(int index, char ch)替换某个位置的字符,

注:没有返回值,替换完就结束了

stringredisTemplate delete无返回值 stringbuffer append返回值_数据_10

-------------------------------------------------------------

5.反转 

StringBuffer reverse()

将abcde倒序打印

stringredisTemplate delete无返回值 stringbuffer append返回值_数组_11

------------------------------------------------------------

6.getChars(开始,结尾,容器,容器开始存储的位置)

将缓冲区的指定数据,存储到指定数组中

stringredisTemplate delete无返回值 stringbuffer append返回值_数据_12

看看,将1-4,即b,c,d存储到char数组(第二个位置开始存)

stringredisTemplate delete无返回值 stringbuffer append返回值_数组_13

-----------------------------------------------------------------

StringBuilder

JDK 1.5以后出现的,和StringBuffer几乎一样

StringBuffer是线程同步的;StringBuilder是线程不同步的

如果你是单线程,那就用StringBuilder,这样不用判断锁,提高效率,

如果是多线程,为了保证安全性,就用StringBuffer

以后开发,建议使用StringBuilder

----------------------------------------------------------------------

java升级的3个原因:

1.提高效率

2.简化书写

3.提高安全性