Java: ¿cómo inicializar String []?

201

Error

% 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
fuente

Respuestas:

332

Debe inicializar errorSoon , como lo indica el mensaje de error, solo lo ha declarado .

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

Debe inicializar la matriz para que pueda asignar el almacenamiento de memoria correcto para los Stringelementos antes de que pueda comenzar a configurar el índice.

Si solo declara la matriz (como lo hizo), no hay memoria asignada para los Stringelementos, sino solo un identificador de referencia errorSoony arrojará un error cuando intente inicializar una variable en cualquier índice.

Como nota al margen, también puede inicializar la Stringmatriz dentro de llaves, { }por lo tanto,

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

que es equivalente a

String[] errorSoon = new String[2];
errorSoon[0] = "Hello";
errorSoon[1] = "World";
Anthony Forloney
fuente
8
Es una pena que no puedas usar () para crear instancias de cada Cadena en tu matriz con un valor predeterminado. Una matriz de 5 cadenas vacías debe ser = new Array [5] (""); en lugar de = {"", "", "", "", ""}.
Pieter De Bie
Use un bucle for.
Tom Burris
128
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"};
Yauhen
fuente
3
Tal vez no sea exactamente lo que sugiere el título de la pregunta de OP, pero estaba tratando de pasar mi cadena a un parámetro que acepta String [], esta es la solución
kommradHomer
¿No puedes omitir el nuevo String por cierto? Cadena [] salida = {"", "", ""}; Parece funcionar en mi código.
Pieter De Bie
2
Si ya ha inicializado su matriz y desea reiniciarla, no puede ir. args = {"new","array"};Deberá hacerlo args = new String[]{"new", "array"};
Darpan
26
String[] errorSoon = { "foo", "bar" };

- o -

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

Creo que acabas de migrar de C ++. Bueno, en Java tienes que inicializar un tipo de datos (que no sean tipos primitivos y String no se considera un tipo primitivo en Java) para usarlos según sus especificaciones si no lo haces. es como una variable de referencia vacía (como un puntero en el 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
fuente
9

En Java 8 también podemos hacer uso de flujos, por ejemplo

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

En caso de que ya tengamos una lista de cadenas ( stringList), podemos recopilarlas en una matriz de cadenas como:

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

Con n siendo cuántas cuerdas necesita contener.

Puede hacerlo en la declaración, o sin la Cadena [] más adelante, siempre que sea antes de intentar usarlos.

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

Si pasa una matriz de cadenas a un método, haga lo siguiente:

myFunc(arr);

o hacer:

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

Siempre puedes escribirlo así

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

Declaración de cadena:

String str;

Inicialización de cadena

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 obtener caracteres individuales en String:

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

Si quiero obtener un valor Ascii de carácter individual como este:

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

Ahora quiero convertir el valor Ascii en Charecter / Symbol.

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

es la inicialización y obtener el código STRING LENGTH de manera muy simple para principiantes

Asfer Hussain Siddiqui
fuente
0

Puede usar el siguiente código para inicializar el tamaño y establecer un valor vacío en la matriz de cadenas

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