NULL对象的StringBuffer行为

nam*_*ked 5 java null stringbuilder

当NULL对象附加到实例时,我无法理解StringBuilder的以下行为:

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. ???
    }

}
Run Code Online (Sandbox Code Playgroud)

最后一个打印语句不打印0.任何人都可以帮我理解行为吗?

Pus*_*kar 9

来自StringBuffer API -

http://download.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuffer.html#append(java.lang.String)

String参数的字符按顺序附加,按参数的长度增加此序列的长度.如果str为null,则附加四个字符"null".

这应该将长度解释为4.