public class StartApplication
{
public static void main(String[] args)
{
String str=null;
StringBuffer stringBuffer=new StringBuffer();
stringBuffer.append(str);
System.out.println("stringBuffer:"+stringBuffer);//"null"
System.out.println("stringBuffer.length():"+stringBuffer.length());//4
StringBuffer stringBuffer1=new StringBuffer(str);//运行时报错
System.out.println("stringBuffer1"+stringBuffer1);
}
}
结果:
stringBuffer:null
Exception in thread "main" java.lang.NullPointerException
stringBuffer.length():4
at java.lang.StringBuffer.
at com.gsafety.StartApplication.main(StartApplication.java:16)
原因:
以下为jdk源码
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;
}
public StringBuffer(String str) {
super(str.length() + 16);
append(str);
}


