Java: comment initialiser String []?


Réponses:


332

Vous devez initialiser errorSoon , comme indiqué par le message d'erreur, vous venez de le déclarer .

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

Vous devez initialiser le tableau afin qu'il puisse allouer le stockage de mémoire correct pour les Stringéléments avant de pouvoir commencer à définir l'index.

Si seulement vous déclarez le tableau (comme vous l'avez fait), il n'y a pas de mémoire allouée aux Stringéléments, mais uniquement un descripteur de référence à errorSoon, et générera une erreur lorsque vous essayez d'initialiser une variable à n'importe quel index.

En remarque, vous pouvez également initialiser le Stringtableau à l'intérieur des accolades, { }comme tel,

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

ce qui équivaut à

String[] errorSoon = new String[2];
errorSoon[0] = "Hello";
errorSoon[1] = "World";

8
C'est dommage que vous ne puissiez pas utiliser () pour instancier chaque chaîne de votre tableau avec une valeur par défaut. Un tableau de 5 chaînes vides doit être = new Array [5] (""); au lieu de = {"", "", "", "", ""}.
Pieter De Bie

Utilisez une boucle for.
Tom Burris

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

3
Peut-être pas exactement ce que le titre de la question OP suggère, mais j'essayais de passer ma chaîne à un paramètre qui accepte String [], c'est la solution
kommradHomer

Vous ne pouvez pas oublier le nouveau String btw? String [] output = {"", "", ""}; semble fonctionner dans mon code.
Pieter De Bie

2
Si vous avez déjà initialisé votre baie et que vous souhaitez la réinitialiser, vous ne pouvez pas y aller. args = {"new","array"};Vous devrez args = new String[]{"new", "array"};
Darpan

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

-- ou --

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

9

Je crois que vous venez de migrer de C ++, Eh bien en java, vous devez initialiser un type de données (autres que les types primitifs et String n'est pas considéré comme un type primitif en java) pour les utiliser selon leurs spécifications si vous ne le faites pas alors c'est comme une variable de référence vide (un peu comme un pointeur dans le contexte 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?"};   
    }
}

9

Dans Java 8, nous pouvons également utiliser des flux, par exemple

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

Dans le cas où nous avons déjà une liste de chaînes ( stringList), nous pouvons collecter dans un tableau de chaînes comme:

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

7
String[] errorSoon = new String[n];

Avec n étant le nombre de chaînes qu'il doit contenir.

Vous pouvez le faire dans la déclaration, ou le faire sans String [] plus tard, tant que c'est avant d'essayer de les utiliser.


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

Si vous passez un tableau de chaînes à une méthode, procédez comme suit:

myFunc(arr);

ou faites:

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

1

Vous pouvez toujours l'écrire comme ça

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

0

Déclaration de chaîne:

String str;

Initialisation de chaîne

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

Nous pouvons obtenir un caractère individuel dans String:

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

Si je veux obtenir une valeur Ascii de caractère individuel comme ceci:

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

Maintenant, je veux convertir la valeur Ascii en caractère / symbole.

int n=(int)chr;
System.out.println((char)n);//output:S

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

c'est l'initialisation et obtenir le code STRING LENGTH de manière très simple pour les débutants


0

Vous pouvez utiliser le code ci-dessous pour initialiser la taille et définir une valeur vide sur un tableau de chaînes

String[] row = new String[size];
Arrays.fill(row, "");
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.