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

Ответы:

332

Вам нужно инициализировать 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";
Энтони Форлони
источник
8
Жаль, что вы не можете использовать () для создания экземпляра каждой строки в вашем массиве со значением по умолчанию. Массив из 5 пустых строк должен быть = new Array [5] (""); вместо = {"", "", "", "", ""}.
Питер де Би
Используйте для цикла.
Том Беррис
128
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"};
Yauhen
источник
3
Возможно, не совсем то, что предлагает заголовок вопроса ОП, но я пытался передать свою строку параметру, который принимает String [], это решение
kommradHomer
Не могли бы вы пропустить новую строку? String [] output = {"", "", ""}; Кажется, работает в моем коде.
Питер де Би
2
Если вы уже инициализировали свой массив и хотите повторно инициализировать его, вы не можете идти. args = {"new","array"};Вам придется args = new String[]{"new", "array"};
Дарпан,
26
String[] errorSoon = { "foo", "bar" };

-- или --

String[] errorSoon = new String[2];
errorSoon[0] = "foo";
errorSoon[1] = "bar";
Тейлор Лиз
источник
9

Я полагаю, что вы только что перешли с C ++. Что ж, в Java вы должны инициализировать тип данных (кроме примитивных типов, а String не рассматривается как примитивный тип в Java), чтобы использовать их в соответствии с их спецификациями, если вы этого не сделаете это как пустая ссылочная переменная (очень похоже на указатель в контексте C ++).

public class StringTest {
    public static void main(String[] args) {
        String[] errorSoon = new String[100];
        errorSoon[0] = "Error, why?";
        //another approach would be direct initialization
        String[] errorsoon = {"Error , why?"};   
    }
}
Сайед Тайяб Аббас
источник
9

В Java 8 мы также можем использовать потоки, например

String[] strings = Stream.of("First", "Second", "Third").toArray(String[]::new);

В случае, если у нас уже есть список строк ( stringList), мы можем собрать в массив строк как:

String[] strings = stringList.stream().toArray(String[]::new);
akhil_mittal
источник
7
String[] errorSoon = new String[n];

Если n, сколько строк нужно хранить.

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

AaronM
источник
2
String[] arr = {"foo", "bar"};

Если вы передаете строковый массив методу, выполните:

myFunc(arr);

или сделать:

myFunc(new String[] {"foo", "bar"});
триллионы
источник
1

Вы всегда можете написать это так

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

For (int x=0;x<errorSoon.length;x++) // in this way u create a for     loop that would like display the elements which are inside the array     errorSoon.oh errorSoon.length is the same as errorSoon<2 

{
   System.out.println(" "+errorSoon[x]); // this will output those two     words, at the top hello and world at the bottom of hello.  
}
Gopolang
источник
0

Строковая декларация:

String str;

Строка Инициализация

String[] str=new String[3];//if we give string[2] will get Exception insted
str[0]="Tej";
str[1]="Good";
str[2]="Girl";

String str="SSN"; 

Мы можем получить индивидуальный характер в строке:

char chr=str.charAt(0);`//output will be S`

Если я хочу, чтобы получить индивидуальный характер Ascii значение, как это:

System.out.println((int)chr); //output:83

Теперь я хочу конвертировать значение Ascii в Charecter / Symbol.

int n=(int)chr;
System.out.println((char)n);//output:S
Шива Нандам Сирмаригари
источник
0
String[] string=new String[60];
System.out.println(string.length);

это инициализация и получение кода STRING LENGTH очень простым способом для начинающих

Асфер Хуссейн Сиддики
источник
0

Вы можете использовать приведенный ниже код для инициализации размера и установки пустого значения в массив строк

String[] row = new String[size];
Arrays.fill(row, "");
Али Садеги
источник