专业的集团网站建设,网站开发需要的人员,专业外贸网站建设公司排名,省财政厅经济建设处网站StringBuffer是可变的字符序列#xff0c;当一个StringBuffer被创建以后#xff0c;通过StringBuffer提供append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串#xff0c;就可以调…StringBuffer是可变的字符序列当一个StringBuffer被创建以后通过StringBuffer提供append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串就可以调用它的toString()方法将其转换为一个String对象。StringBuffer的直接父类是AbstractStringBuilder实现了Serializable即StringBuffer的对象可以串行化在父类中AbstractStringBuilder有属性char[] value不是final该value数组存放字符串内容存放在堆中StringBuffer是一个final 类不能被继承因为StringBuffer字符内容是存在char[] value所以在变化(增加/删除) 时不用每次都更换地址(不用创建新对象)效率高于String。
/*** Author * StringBuffer**/
public class StringBuffer01 {public static void main(String[] args) {//创建一个大小为16的char[],用于存放字符内容StringBuffer stringBuffer01 new StringBuffer();//2.通过构造器指定char[]的大小StringBuffer stringBuffer02 new StringBuffer(100);//通过给一个String 创建 StringBuffer,char[] 大小就是str.length 16StringBuffer stringBuffer03 new StringBuffer(hello);String str null;StringBuffer sb new StringBuffer();sb.append(str);System.out.println(sb.length());//4}
}
String str null是成立的但是在StringBuffer的源码中append()方法
Overridepublic synchronized StringBuffer append(Object obj) {toStringCache null;super.append(String.valueOf(obj));return this;}从源码中看出StringBuffer中的append方法调用了父类的append方法进父类AbstractStringBuilder查看父类的append方法源码如下 public AbstractStringBuilder append(String str) {if (str null)return appendNull();int len str.length();ensureCapacityInternal(count len);str.getChars(0, len, value, count);count len;return this;}str为空时调用appendNull()方法追进appendNull()方法 private AbstractStringBuilder appendNull() {int c count;ensureCapacityInternal(c 4);final char[] value this.value;value[c] n;value[c] u;value[c] l;value[c] l;count c;return this;}把空对象转化为字符数组’null’故最后输出的结果应该为4。