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

Ошибка

% 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?";
        }
}

Ответ 1

Вам нужно инициализировать 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";

Ответ 2

String[] args = new String[]{"firstarg", "secondarg", "thirdarg"};

Ответ 3

String[] errorSoon = { "foo", "bar" };

- или -

String[] errorSoon = new String[2];
errorSoon[0] = "foo";
errorSoon[1] = "bar";

Ответ 4

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

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?"};   
    }
}

Ответ 5

String[] errorSoon = new String[n];

С n количеством строк, которые нужно удерживать.

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

Ответ 6

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

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

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

String[] strings = stringList.stream().toArray(String[]::new);

Ответ 7

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

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.  
}

Ответ 8

Объявление строки:

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"; 

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

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

Ответ 9

String[] string=new String[60];
System.out.println(string.length);

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

Ответ 10

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

String[] row = new String[size];
Arrays.fill(row, "");

Ответ 11

String[] arr = {"foo", "bar"};

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

myFunc(arr);

или сделать:

myFunc(new String[] {"foo", "bar"});