公共类TestMyStringBuilderII {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
StringBuilder sb1 = new StringBuilder("World");
StringBuilder sb2 = new StringBuilder();
//StringBuilder sb3 = new StringBuilder(null);
StringBuilder sb4 = new StringBuilder("");
System.out.println(sb);
System.out.println(sb.length());
System.out.println(sb.append(sb1));
System.out.println(sb.append(sb2));
//System.out.println(sb.append(sb3));
}}
sb3 = StringBuilder(null)结果为NullPointerException。现在,StringBuilder()、StringBuilder("")和StringBuilder(null)之间的区别是什么?
a) System.out.println(sb2);当实际字符("null")被附加(根据AbstaractStringClass定义)时,打印是否为空格-为什么?
b) System.out.println(sb2.length());打印的是0,这是不是因为sb不是真正的"null“(意思是它是长度为0的某种东西/类型?)
c) System.out.println( sb4 );是否打印空格和长度(sb4.length());打印0(清楚地假设sb4实际上是字符串,因为参数使用了双引号,但长度为零)-正确吗?
我不确定这个问题的表述是否正确,但如果有人能理解我的想法/困惑并澄清一下,我将不胜感激。
发布于 2016-01-21 16:09:20
对于new StringBuilder().append("abc")来说,new StringBuilder("abc")是一个方便的重载,除了javadoc说:
字符串构建器的初始容量是16 加上字符串参数的长度。
这是为了创建一个更大的初始支持数组,以提高性能,尽管这可能是微不足道的。
由于不能获取空值的长度,因此得到的是NullPointerException。
发布于 2016-01-21 16:08:25
new StringBuilder()和new StringBuilder("")是等效的;它们都创建一个空的StringBuilder,没有任何内容,在任何意义上都不是包含null的StringBuilder。我相信这回答了你的三个问题。
发布于 2016-01-21 16:17:57
StringBuilder()和StringBuilder("")也在做同样的事情。
StringBuilder()只调用super( 16 ),初始化一个长度为16的字符数组,而StringBuilder( "“)将”“的长度加到16,然后调用super,如下所示: super(str.length() + 16)。因此这两个函数都会返回一个初始化StringBuilder对象。
由于super(null.length() + 16),StringBuilder(null)崩溃
https://stackoverflow.com/questions/34918237
复制相似问题