Java: como inicializar String []?

201

Erro

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

Código

public class StringTest {
        public static void main(String[] args) {
                String[] errorSoon;
                errorSoon[0] = "Error, why?";
        }
}
hhh
fonte

Respostas:

332

Você precisa inicializar errorSoon , conforme indicado pela mensagem de erro, apenas a declarou .

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

Você precisa inicializar a matriz para que ela possa alocar o armazenamento de memória correto para os Stringelementos antes de começar a definir o índice.

Se você declarar apenas a matriz (como fez), não há memória alocada para os Stringelementos, mas apenas um identificador de referência paraerrorSoon e lançará um erro ao tentar inicializar uma variável em qualquer índice.

Como uma observação lateral, você também pode inicializar a Stringmatriz dentro de chaves, { }assim,

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

que é equivalente a

String[] errorSoon = new String[2];
errorSoon[0] = "Hello";
errorSoon[1] = "World";
Anthony Forloney
fonte
8
É uma pena que você não possa usar () para instanciar cada String na sua matriz com um valor padrão. Uma matriz de 5 strings vazias deve ser = new Array [5] (""); em vez de = {"", "", "", "", ""}.
Pieter De Bie
Use um loop for.
Tom Burris
128
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"};
Yauhen
fonte
3
Talvez não o exatamente o que o título PO questão sugere, mas eu estava tentando passar a minha string para um parâmetro que aceita String [], esta é a solução
kommradHomer
Você não pode omitir a nova String btw? String [] output = {"", "", ""}; parece funcionar no meu código.
Pieter De Bie
2
Se você já tiver iniciado sua matriz e que pretende re inicializar-lo, você não pode ir args = {"new","array"};Você terá que args = new String[]{"new", "array"};
Darpan
26
String[] errorSoon = { "foo", "bar" };

- ou -

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

Eu acredito que você acabou de migrar do C ++. Bem, em java, você precisa inicializar um tipo de dados (outros tipos primitivos e String não é considerado um tipo primitivo em java) para usá-los conforme as especificações, se você não é como uma variável de referência vazia (como um ponteiro no contexto de 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?"};   
    }
}
Syed Tayyab Abbas
fonte
9

No Java 8 , também podemos fazer uso de fluxos, por exemplo

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

Caso já tenhamos uma lista de strings ( stringList), podemos coletar no array de strings como:

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

Sendo n quantas cordas ele precisa conter.

Você pode fazer isso na declaração ou sem a String [] posteriormente, desde que seja antes de tentar usá-las.

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

Se você passar uma matriz de string para um método, faça:

myFunc(arr);

ou faça:

myFunc(new String[] {"foo", "bar"});
trilhões
fonte
1

Você sempre pode escrever assim

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
fonte
0

Declaração de String:

String str;

Inicialização de String

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

Podemos obter caracteres individuais em String:

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

Se eu quiser obter um valor ASCII de caractere individual assim:

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

Agora eu quero converter o valor Ascii em Charecter / Symbol.

int n=(int)chr;
System.out.println((char)n);//output:S
Shiva Nandam Sirmarigari
fonte
0
String[] string=new String[60];
System.out.println(string.length);

é a inicialização e a obtenção do código STRING LENGTH de maneira muito simples para iniciantes

Asfer Hussain Siddiqui
fonte
0

Você pode usar o código abaixo para inicializar o tamanho e definir o valor vazio para a matriz de Strings

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