общественного класса TestMyStringBuilderII {StringBuilder() против StringBuilder (нуль) против StringBuilder ("")
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 (нуль) приводит к NullPointerException. Теперь, в чем разница между StringBuilder(), StringBuilder ("") и StringBuilder (null)?
a) System.out.println (sb2); печатает пустое пространство, когда ожидается, что фактические символы («нуль») будут добавлены (в соответствии с определением AbstaractStringClass) - почему?
b) System.out.println (sb2.length()); является печать 0, так как это потому, что sb не является действительно «нулевым» (это означает, что это какая-то вещь/тип с длиной нуля?)
c) System.out.println (sb4); печатает пустое пространство и System.out.println (sb4.length()); является печать 0 (предполагая, что sb4 фактически является строкой из-за двойных кавычек, используемых для аргумента, но с нулевой длиной) - правильно?
Не уверен, что этот вопрос сформулирован правильно, но я был бы признателен, если бы кто-то, кто может понять мое мышление/путаницу здесь, немного прояснит их.
Совершенных, все четыре ответов ниже имеет смысла.Спасибо всем –