2017-05-01 1 views
2

wenn new int[5] einen int-Array mit einer Länge von 5 erzeugt, und new String[5] erzeugt einen String-Array mit einer Länge von 5,Erstellen von 2D-Arrays in Java macht keinen Sinn

dann von dieser Logik sollte new int[3][4] kein int erstellen [ 3] Array der Länge 4 wie {{1,2,3}, {1,2,3}, {1,2,3}, {1,2,3}}?

+0

Sie meinen drei Arrays, jede der Länge vier? Außerdem sind die Standardwerte '0'. –

+2

Soweit ich weiß, stellt in allen Programmiersprachen der erste Index für ein zweidimensionales Array die Länge des Arrays und der zweite Index die Länge jedes Sub-Arrays dar. –

+0

Es werden also nur drei Arrays der Länge vier statt vier Arrays erstellt von der Länge drei –

Antwort

0

Wie phasma sagte, scheint diese Frage zu fragen, warum Java bei der Array-Erstellung auf "Spaltenmajor" und bei Zugriff auf "Zeilenmajor" auf "Spaltenmajor" umschaltet. Es scheint, als würden mehrdimensionale Arrays in Java mit einer umgekehrten Intuition zugeordnet, aber dann mit der "richtigen" Intuition aufgerufen.

Ein int[][] sollte ein Array von Arrays von int bedeuten, richtig? Und es tut! Wenn Sie also ein Array erstellen, denken Sie vielleicht so: int[][] arr = new (int[3])[4]. Weil es ein Array der Größe 4 mit Arrays der Größe 3 sein sollte!

Wenn Sie diese Intuition jedoch verwenden würden, müssten Sie dann auf das Array wie folgt zugreifen: (arr[0-3])[0-2] anstelle von (arr[0-2])[0-3] wie Sie das Array erstellt hatten, und die Reihenfolge würde umgeschaltet werden und wäre verwirrender und schwieriger debuggen.

Ich glaube, dass der Grund, warum die meisten Sprachen dies tun, darin besteht, die Dinge konsistent zu halten und Verwirrung zu vermeiden. Du bist schlau, so zu denken, da die meisten Menschen es nie bemerken würden.

Verwandte Themen