Java: Initialisierung von Variablen: gleich allen Variablen auf einmal den gleichen Wert zuweisen?
Ich möchte 26 Variablen initialisieren und denen alle auf ein Mal denselben Wert zuweisen. int a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z; All diese Variablen sollen den Wert 0 zugewiesen bekommen. Wie kann ich das am schnellsten machen? ich hab keine Lust jedem Buchstaben nochmal extra die 0 zuzuweisen. a = 0; b = 0; c = 0; d = 0; e = 0; usw. gibt es da einen Trick,? Dass man z.B. eine Klammer um die ganzen Buchstaben macht, und dann die 0 zuweist? Vielen Dank für Antworten :)
5 Antworten
Ich möchte 26 Variablen initialisieren
Warum möchtest du das tun?
ich hab keine Lust jedem Buchstaben nochmal extra die 0 zuzuweisen
Warum nutzt du dann aber 26 einzelne Variablen. Ich bin mir ziemlich sicher, dass du eigentlich ein Array benötigst:
public class MyClass {
public static void main(String args[]) {
int[] numbers = new int[26];
for (int i : numbers) {
System.out.println(i); // gibt 26x 0 aus
}
}
}
Du brauchst sie nicht auf 0 setzen, weil es der Standard-Wert ist.
Ich würde es folgendermaßen machen:
int a, b, c;
a = b = c = 0;
Es gibt diese 3 Alternativen:
a)
int a, b; // usw. a = b = 0;
b)
int a = 0, b = 0, c = 0;
c)
int[] zahlen = new int[26];
for(int i = 0; i < zahlen.length; ++i) zahlen[i] = 0;
Variante c) wäre vorzuziehen, denn sie ist übersichtlicher. Statt einem Array kannst du auch andere Speicheraggregate wie z.B. eine Liste verwenden.
Speicher das Zeug nicht in 26 Einzelvariablen, sondern in 'nem Array, ner Liste, ner Map oder was grad passt - dann kannst du drüberiterieren.
Der Code ist auch falsch. Lies dich nochmal ein wie genau man Listen & Arrays benutzt.
Außerdem wenn du willst dass die Werte 0 sind, dann brauchst du nichts zu machen. Primitive wie int sind standardmäßig 0 (oder false im Falle von boolean)
was ist denn daran konkret falsch?
Bei Java ist dem aber nicht so. Wenn man eine Variable initialisiert und ihr keinen Wert zuweist, wird der Variable nicht automatisch die 0 zugewiesen...da ist dann halt einfach eine 'null-Referenz'.
Die Lösung, was an deinem Code falsch ist, hast du dir bereits selbst gegeben, auch wenn der Standardwert dennoch keine Referenz auf null ist.
Deine ersten beiden Zeilen sind prinzipiell nicht durchdacht. Die Lösung mit dem Array sorgt doch dafür, dass du nicht mehr 26 einzelne Variablen anlegen musst, diese Speichereinheiten stellt das Array bereits selbst zur Verfügung. So wirst du die Werte später auch nicht mehr über a oder b aufrufen, sondern über den Array-Index. Bsp.:
int ersteZahl = zahlen[0];
Primitive Datentypen haben in Java den Vorgabewert von 0 für alle ganzzahligen Typen. Sie enthalten keinen Null-Pointer, d.h. wenn Du die Vorbelegung mit 0 behalten willst, brauchst Du nichts zuzuweisen - es würde höchstens der Klarheit dienen.
Falsch ist der Code nicht, aber es werden nur die array-element initialisiert, die ober Zeile int a, b, ... usw eben nicht-
Du hast also nichts gewonnen.
Am anschaulichsten ist int a = 0, b = 0, c = 0, usw.
Programmieren heist auch etwas Schreibarbeit.
Das es da Fehler gibt ist ein Feature der Sprache. Ist ansonsten eine Fehlerquelle (weil nicht gut lesbar).
Eine "null-Referenz" ist das nicht, wie auch andere schreiben. Das sind Primitive. Die sind nie null. Referenzen können null sein, weil das Zahlen sind, die auf den Speicherbereich der eigentlichen Daten zeigen. Speicheradresse 0 (schön abgekapselt mit null) ist definiert als "zeigt auf nix". Das trifft aber nur auf Objekte zu. Wenn du auf ein Primitiv zugreifst, dann arbeitest du direkt auf den Bits. Bei Referenzen folgt der bei Operationen der Speicheradresse.
Wenn du in Java ein Array anlegst, dann reserviert der sich Speicher für x Elemente und setzt alle bits in dem Bereich auf 0.
Natürlich ist der Code falsch! Nicht umsonst bekommt er einen Compilerfehler.
Werden ints in Java nicht sowieso default-mäßig mit 0 initialisiert?
Das hab ich schon versucht mit dem Array und dann in einer Schleife allen Buchstaben den Wert 0 zuzuweisen, aber dann kommen tausend Fehlermeldungen: "The local variable a,b,c,d, usw. may not have been initialized".