gpt4 book ai didi

java - StringBuilder() vs StringBuilder(null) vs StringBuilder ("")

转载 作者:行者123 更新时间:2023-12-01 07:21:46 33 4
gpt4 key购买 nike

公共(public)类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 = new StringBuilder(null) 会导致 NullPointerException。现在,StringBuilder()、StringBuilder("") 和 StringBuilder(null) 之间有什么区别?

a) System.out.println(sb2);当预期附加实际字符(“null”)时打印空白(根据 AbstaractStringClass 定义) - 为什么?

b) System.out.println(sb2.length());正在打印 0,所以这是因为 sb 并不是真正的“null”(意味着它是长度为零的某种事物/类型?)

c) System.out.println(sb4);正在打印空白空间和 System.out.println(sb4.length());正在打印 0(清楚地假设 sb4 实际上是 String,因为参数使用了双引号,但长度为零) - 正确吗?

不确定这个问题的表述是否正确,但如果有人能理解我的想法/困惑并澄清一下这些问题,我将不胜感激。

最佳答案

new StringBuilder("abc")new StringBuilder().append("abc") 的便捷重载,除了 javadoc 说:

The initial capacity of the string builder is 16 plus the length of the string argument.

这是为了创建一个更大的初始支持数组,以提高性能,尽管这可能很小。

由于您无法获取 null 值的长度,因此您会得到 NullPointerException

关于java - StringBuilder() vs StringBuilder(null) vs StringBuilder (""),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34918237/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com