Когда я создаю новую строку в Java, инициализируется ли она нулевым или "?"?
Здесь мой тестовый код:
String foo = new String();
System.out.println(foo);
Выход пуст и записывается новая строка. Поскольку я новичок в Java, я не знаю, была ли она создана для строки, или нули обрабатываются как пустые строки.
Ответ 1
Строка инициализируется без символов или "внутри".
public String() {
this.offset = 0;
this.count = 0;
this.value = new char[0];
}
Вышеупомянутый источник взят из исходного кода Java. Как указывал другой плакат, ссылки могут быть либо нулевыми, либо указывающими на объект, если вы создаете объект String и получаете ссылку на него, эта ссылка не будет равна нулю.
Ответ 2
"null" - это значение для переменной, а не значение для String. "foo" может иметь нулевое значение, но фактическая строка не может. То, что вы сделали, это создать новую пустую строку (как указано в документации для конструктора) и присвоить ее foo.
Ответ 3
new String() создает строку нулевой длины. Если вы просто сказали "String foo;" как переменная-член, он будет инициализирован нулевым. Если вы скажете "String foo;" как функциональная переменная, это undefined и даст ошибку компиляции, если вы попытаетесь использовать ее, не присваивая значение.
Ответ 4
Инициализируется с помощью "" (пустая строка)
public class StringTest {
public static void main( String [] args ) {
System.out.println( "".equals(new String()));
}
}
печатает:
true
Ответ 5
Новая строка печатается, потому что вы вызвали метод println(), который печатает строку после печати любого переданного вами аргумента. новый String() вернет "".