StringBuilder的介绍、构造方法及成员方法
1.StringBuilder的介绍
1.StringBuilder是字符串缓冲区,可以认为是一种容器,能装任何类型的数据,但被装入的数据都会变为字符串 如图
无论是什么类型的数据,被装入字符串缓冲区后都被拼接成字符串
2.StringBuilder是一种可变的字符序列
2.StringBuilder的构造方法
1.StringBuilder()
在创建对象时,就会调用构造方法StringBuilder(),会创建出一个空的字符串缓冲区,即一个空的容器,要让容器有数据,得由程序员自行装入
2.StringBuilder(String str)
在创建对象时就会调用该构造方法,会创建出一个带有初始化内容的字符串缓冲区,其内容则是括号里的数据
3.StringBuilder的成员方法
1.StringBuilder append(任意类型)
使用该方法可以将括号里的任意类型的数据装入字符串缓冲区(StringBuilder) 如图
添加数据仅仅是常规功能,重要的是返回对象本身
什么是返回对象本身?不妨看看下图
明明使用的是sb1进行接收,并且是用sb1调用的append,为什么打印sb时,控制台上却都显示了sb1装入的数据?
答:1.首先,在append方法上我们发现它返回类型是StringBuilder,而sb的类型也是StringBuilder,因此append可以返回值给sb这个对象
2.因为append返回了sb,所以当装入了数据时,sb就会接收到这些数据,而sb1仅仅是一个中介,sb1.append()所装入的数据也因为append这个方法可以返回对象本身,而被sb所接收,所以我们打印sb就会出现这些数据
根据上面的解释,我们会发现我们貌似完全不需要sb1这个中介 如图
链式编程:调用的方法,返回的结果是对象,就可以继续向下调用方法
知识:今后,只要返回结果是对象的方法,都可以使用链式编程
提问:为什么打印的这四个变量的数据一模一样?
答:因为这4个数据都使用的append方法,而append方法返回的结果是对象,也就说明这四个方法指向同一块内存空间(sb),而sb的值就是所有装入的数据,因此打印的结果一样
2.StringBuilder reverse()
将缓冲区里的字符串进行内容反转,因为返回类型也是StringBuilder 所以返回的结果也是对象,也可以使用链式编程
注意,返回结果是对象的方法,是可以相互使用的
这里是先反转了之前sb所装入的数据,而后又装入新的数据,所以“我没有反转”没有被反转
3.int length()
返回sb里装入的字符串长度
4.toString()
将StringBuilder类型转换为String类型
明明StringBuilder就可以打印括号里的字符串,为什么还要转换成String进行打印?
tostring()的应用场景:当数据存在StringBuilder中,但是我们要调用的方法在StringBuilder中没有,但是String中有的时候,就要用到该方法 如图