Java 空对象的StringBuffer行为
当将空对象附加到实例时,我无法理解StringBuilder的以下行为:Java 空对象的StringBuffer行为,java,null,stringbuilder,Java,Null,Stringbuilder,当将空对象附加到实例时,我无法理解StringBuilder的以下行为: public class StringBufferTest { /** * @param args */ public static void main(String[] args) { String nullOb = null; StringBuilder lsb = new StringBuilder(); lsb.append("
public class StringBufferTest {
/**
* @param args
*/
public static void main(String[] args) {
String nullOb = null;
StringBuilder lsb = new StringBuilder();
lsb.append("Hello World");
System.out.println("Length is: " + lsb.length());// Prints 11. Correct
lsb.setLength(0);
System.out.println("Before assigning null" + lsb.length());
lsb.append(nullOb);
System.out.println("Length now is:" + lsb.length()); // Prints 4. ???
}
}
最后一条print语句不打印0。有人能帮我理解这个行为吗?来自StringBufferAPI- 字符串参数的字符按顺序追加, 将此序列的长度增加参数的长度。 如果str为null,则添加四个字符“null”
这应该解释为4的长度。否,您将长度设置为0;“分配null之前”打印0 然后追加
null
,该字符串将作为长度为4的字符串“null”
显示在缓冲区中。StringBuilder在为其提供null引用时追加“null”。它简化了调试。如果希望使用空字符串而不是“null”,只需在追加之前测试引用:
if (obj != null) {
builder.append(obj);
}
D***应该阅读附加(字符串)的文档。谢谢