Подтвердить что ты не робот

Когда я создаю новую строку в Java, инициализируется ли она нулевым или "?"?

Здесь мой тестовый код:

String foo = new String();
System.out.println(foo);

Выход пуст и записывается новая строка. Поскольку я новичок в Java, я не знаю, была ли она создана для строки, или нули обрабатываются как пустые строки.

4b9b3361

Ответ 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() вернет "".