it-roy-ru.com

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

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

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

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

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

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

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

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

String[] errorSoon = new String[2];
errorSoon[0] = "Hello";
errorSoon[1] = "World";
285
Anthony Forloney
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"};
115
Yauhen
String[] errorSoon = { "foo", "bar" };

-- или же --

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

Я полагаю, что вы только что перешли с 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
Syed Tayyab Abbas

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

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

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

String[] strings = stringList.stream().toArray(String[]::new);
7
i_am_zero
String[] errorSoon = new String[n];

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

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

7
AaronM

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

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

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

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
Shivanandam
String[] string=new String[60];
System.out.println(string.length);

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

0
Asfer Hussain Siddiqui

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

String[] row = new String[size];
Arrays.fill(row, "");
0
Ali Sadeghi
String[] arr = {"foo", "bar"};

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

myFunc(arr);

или сделать:

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