前言
StringBuffer 、 StringBuilder、 String 是三种数据类型
首先来回顾下String类的特点:
任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指
向而已。
通常来讲String的操作比较简单,但是由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和
StringBuilder类。
再来说 StringBuffer 和 StringBuilder ,从内部的方法上来说:大同小异,基本一致。
StringBuilder
我们先直接new 个 StringBuilder,看个效果
既然发现直接使用,没有现象,那么我们就来传参。
第一种 直接传参
疑问由此而生,sb 是一个引用,存储的地址,那么它怎么 就可以打印"abcdef"呢?
这是因为 sout(System.out,println) 调用的是 sb 引用类型的 toString。
那么我们 Ctrl+左键,进入 StringBuilder 类型中
那么我们就可以这么去写,因为它的返回值本身就是 String
第二种,通过append方法去添加
附图
这是我们再 append 一个字符串时,会发生怎么的效果
ppend 可以连用。
语法: append().append();
小知识点:
把字符串转变成StringBuilder类型/StringBuffer类型,必须调用对应的构造方法
StringBuilder类型/StringBuffer类型 转变成 String类型,调用 toString 方法
面试题:请解释String、StringBuffer、StringBuilder的区别
String 的内容不可修改,StringBuffer 与 StringBuilder的内容可以修改
StringBuffer 与 StringBuilder 大部分功能是相似的
StringBuffer 采用同步处理(synchronized),属于线程安全操作;而 StringBuilder 未采用同步处理(synchronized),属于线程不安全操作