Frage

Wenn ich eine int Array wie folgt aufgebaut:

private int[][] map = new int[400][400];

Und ich versuche abrufen

map[100][200]

Und das Element nicht initialisiert wird, wird ich einen Compiler / Laufzeitfehler erhalten oder wird es null zurück? Und gibt es eine Funktion zu überprüfen, ob ein bestimmtes Element / Index vorhanden ist / eingestellt wurde?

War es hilfreich?

Lösung

Wie Sie Ihre Array Deklaration einer primitiven Typ ist, werden Sie keine Compiler oder Laufzeitfehler erhalten -. Der Standardwert von 0 wird zurückgegeben

Wenn Ihr Array ein Array von Objekten gewesen wäre, dann wäre das Array null für jedes Element halten nicht speziell zugeordnet.

Andere Tipps

Ich werde nicht zurückkehren null weil int ein primitiver Typ ist. Es wird den Standard int Wert zurückgeben, was 0 ist.

Es gibt keine Möglichkeit zu wissen, wenn irgendein Element gesetzt wurde, kurz einen separaten boolean-Array zu halten.

In Java nur Referenz Variablen initialisiert auf null. Primitives sind garantiert entsprechende Standardwerte zurück . Für Ints ist dieser Wert 0.

Nein.

Ihre Array-Elemente sind nur groß genug ints zu halten, in diesem Fall. Es gibt keinen Ort, um die Informationen zu speichern, wenn das Element „existiert“. Es wurde zugeteilt, so dass es existiert. In Java wird neu zugewiesenen int Arrays initialisiert werden, um alle Elemente Null.

Sie können mit check pmd und findbugs auf Ihrer Quelle (findbugs auf der binär), und sie werden Sie Dinge wie diese erzählen.

Leider ist es nicht so aus, wie sie dieses besondere Problem zu fangen (was Sinn macht, die die Anordnung garantiert jedes Mitglied auf 0 gesetzt hat, null oder false).

Die Verwendung dieser Werkzeuge kann, werden fängt Instanz und Klassenmitglieder (die nicht-Arrays ist), die vor dem Wert verwendet werden, obwohl (ähnliche Art von Problem) gegeben wird.

Bit eines toten Thema, aber ich fand es zufällig so ich werde Stelle mein Stück Weisheit (oder was auch immer: P) bin. Sie könnten Arrays.Fill verwenden Ihren Array zu füllen, wenn es mit einem ungültigen Wert wie -1 erstellt wird. Dann können Sie leicht eine tun, wenn x <0 überprüfen, ob Sie, dass bestimmte Feldposition initialisiert hat oder nicht. Nur eine Idee ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top