Java: Wie initialisiere ich String []?

200

Error

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

Code

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

Antworten:

330

Sie müssen initialisieren errorSoon , wie in der Fehlermeldung angegeben, Sie haben es nur deklariert .

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

Sie müssen das Array initialisieren, damit es den richtigen Speicher für die StringElemente zuweisen kann, bevor Sie mit dem Festlegen des Index beginnen können.

Wenn Sie nur das Array deklarieren (wie Sie es getan haben), ist kein Speicher für das Array zugewiesenString Elementen , sondern nur ein Referenzhandle errorSoon, und es wird ein Fehler ausgegeben, wenn Sie versuchen, eine Variable an einem beliebigen Index zu initialisieren.

Als Randbemerkung, können Sie auch das initialisieren StringArray in geschweiften Klammern, { }wie so,

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

das ist äquivalent zu

String[] errorSoon = new String[2];
errorSoon[0] = "Hello";
errorSoon[1] = "World";
Anthony Forloney
quelle
8
Es ist eine Schande, dass Sie nicht () verwenden können, um jeden String in Ihrem Array mit einem Standardwert zu instanziieren. Ein Array mit 5 leeren Zeichenfolgen sollte = new Array [5] ("") sein. anstelle von = {"", "", "", "", ""}.
Pieter De Bie
Verwenden Sie eine for-Schleife.
Tom Burris
128
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"};
Yauhen
quelle
3
Vielleicht nicht genau das, was der Titel der OP-Frage andeutet, aber ich habe versucht, meinen String an einen Parameter zu übergeben, der String [] akzeptiert. Dies ist die Lösung
kommradHomer
Kannst du den neuen String übrigens nicht weglassen? String [] output = {"", "", ""}; scheint in meinem Code zu funktionieren.
Pieter De Bie
2
Wenn Sie Ihr Array bereits initialisiert haben und es erneut initialisieren möchten, können Sie nicht gehen. args = {"new","array"};Sie müssen args = new String[]{"new", "array"};
Darpan
25
String[] errorSoon = { "foo", "bar" };

-- oder --

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

Ich glaube, Sie sind gerade von C ++ migriert. Nun, in Java müssen Sie einen Datentyp initialisieren (andere als primitive Typen und String wird in Java nicht als primitiver Typ angesehen), um sie gemäß ihren Spezifikationen zu verwenden, wenn Sie dies nicht tun Es ist wie eine leere Referenzvariable (ähnlich wie ein Zeiger im Kontext von 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
quelle
9

In Java 8 können wir auch Streams verwenden, z

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

Falls wir bereits eine Liste von Strings ( stringList) haben, können wir Folgendes in einem String-Array sammeln:

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

Mit n ist, wie viele Zeichenfolgen es halten muss.

Sie können dies in der Deklaration oder später ohne den String [] tun, solange Sie versuchen, sie zu verwenden.

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

Wenn Sie ein String-Array an eine Methode übergeben, gehen Sie wie folgt vor:

myFunc(arr);

oder tun:

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

Sie können es immer so schreiben

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

String-Deklaration:

String str;

String-Initialisierung

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

Wir können einzelne Zeichen in String erhalten:

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

Wenn ich einen individuellen Charakter-Ascii-Wert wie folgt erhalten möchte:

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

Jetzt möchte ich den Ascii-Wert in Charecter / Symbol konvertieren.

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

Für Anfänger ist es die Initialisierung und das Abrufen des STRING LENGTH-Codes auf sehr einfache Weise

Asfer Hussain Siddiqui
quelle
0

Sie können den folgenden Code verwenden, um die Größe zu initialisieren und den leeren Wert für das Array von Strings festzulegen

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