Java: как инициализировать Строку []?

Ошибка

% javac  StringTest.java 
StringTest.java:4: variable errorSoon might not have been initialized
        errorSoon[0] = "Error, why?";

Код

public class StringTest {
        public static void main(String[] args) {
                String[] errorSoon;
                errorSoon[0] = "Error, why?";
        }
}
191
задан hhh 1 April 2010 в 12:39
поделиться

3 ответа

Вам необходимо инициализировать errorSoon , как указано в сообщении об ошибке, вы только объявили это.

String[] errorSoon;                   // <--declared statement
String[] errorSoon = new String[100]; // <--initialized statement

Вам необходимо инициализировать массив, чтобы он мог выделить правильную память для элементов String , прежде чем вы сможете начать установку индекса.

Если вы только объявляете массив (как и вы), то для элементов String не выделяется память, а только дескриптор ссылки на errorSoon , и выдаст ошибку при попытке инициализировать переменную по любому индексу.

В качестве примечания, вы также можете инициализировать массив String внутри фигурных скобок, {} как таковой,

String[] errorSoon = {"Hello", "World"};

что эквивалентно

String[] errorSoon = new String[2];
errorSoon[0] = "Hello";
errorSoon[1] = "World";
310
ответ дан 23 November 2019 в 05:32
поделиться
String[] errorSoon = new String[n];

При n - сколько строк нужно удерживать.

Вы можете сделать это в объявлении или сделать это без String [] позже, если это будет до того, как вы попытаетесь их использовать.

7
ответ дан 23 November 2019 в 05:32
поделиться
String[] errorSoon = { "foo", "bar" };

- или -

String[] errorSoon = new String[2];
errorSoon[0] = "foo";
errorSoon[1] = "bar";
25
ответ дан 23 November 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: