Ich lerne über gute Praxis für Java-Codierung. Normalerweise sehe ich ein Beispiel wie unten. Strings sind unveränderlich, daher nehme ich an, dass die Neuzuweisung von Werten an dieselbe String-Variable ein anderes String-Objekt erzeugen könnte. Ich bin ein bisschen verwirrt.Wird die gleiche String-Variable mit nextLine() eine schlechte Übung in Java neu zuweisen?
Werden Codes unten als eine schlechte Praxis angesehen? Bedeutet das nicht, dass der gleiche String-Referenzpunkt auf die verschiedenen Objekte zeigt und wir nicht mehr auf diese Objekte zugreifen können? Wenn dies zutrifft, sollten wir die replace() -Methode verwenden, um diese Situation zu vermeiden? Stimmt es, dass wir einfach andere Klassen wie StringBuilder verwenden sollten? Ich brauche nur eine Bestätigung über meine Gedanken.
Scanner input = new Scanner(System.in);
String str = null;
while(input.hasNext()){
str = input.nextLine();
System.out.println(str);
}
Vielen Dank
Nein, es ist in Ordnung. Aber in diesem Fall würde das Deklarieren von "str" innerhalb der Schleife seinen Umfang reduzieren, was allgemein als gute Praxis angesehen wird. – markspace
Sie haben Recht - das zweite Mal, wenn Sie die Schleife durchlaufen und 'str' zuweisen, ist die' 'String' ', die beim ersten Mal erstellt wurde, nicht mehr zugänglich. Das ist in Ordnung, weil (1) du es nicht mehr brauchst, und (2) das Objekt wird nicht für immer den Speicher auffüllen, weil Java einen _garbage collector_ hat, der den Speicher schließlich für Objekte wiederverwenden wird, die nicht sind benutzt noch mehr. – ajb
Im Prinzip ist dies die 100% normale Vorgehensweise in speicherverwalteten Sprachen wie Java oder C#. Wenn Sie Programme schreiben, die auf Systemen mit sehr begrenztem Speicher ausgeführt werden und/oder hoch optimiert werden müssen, sollten Sie eine andere Sprache verwenden. – ajb