Was würdet Ihr bei folgender Frage antworten: Wie viele Elemente enthält das Array a?
Java:
int[][] a =newint[5][10];
M.M.n sind es 5 Elemente, in Sprachen, wo Arrays linearisiert im RAM abgelegt werden, könnte man sich ja bildlich noch 50 vorstellen, aber in Java doch nicht, oder?
Gegenfrage: Was verstehst du unter "Element"? ein int[]? oder einen int?
Das ganze ist meiner Meinung nach nur Definitionsrelevant und hat mit der Anwendung garnichts zu tun.
Die Frage ist definitiv nicht eindeutig, ich würde aber auch zu 5 tendieren. Ansonsten müsste man schon fragen: "Wieviel Elemente enthält das zweidimensionale Array.." oder "Wieviele ints enthält.."
Stimmt. Es handelt sich um eine Testfrage, die in meinen Augen aber zu ungenau formuliert wurde.
Edit:
Die Frage ist definitiv nicht eindeutig, ich würde aber auch zu 5 tendieren. Ansonsten müsste man schon fragen: "Wieviel Elemente enthält das zweidimensionale Array.." oder "Wieviele ints enthält.."
Ich würde sagen es sind 50 Elemente, da 5*10 nach Adam Riese und Eva Zwerg 50 sind ;-)
Es hat vielleicht 5 Zeilen oder 10 Spalten, aber nunmal insgesamt 50 Elemente des Typs int
faetzminator, damit würdest du sagen, dass 2 dimensionale Arrays keine Arrays wären.
Aber a ist quasi 2 Arrays ein 2 dimensionales vom Typ int und ein 1 dimensionales vom Typ int[].
Deswegen auch meine Gegenfrage, was als "Element" bezeichnet wird.
Und bevor es ein anderer schreibt:
bei
Code:
int[][] a = new int[5][];
wäre ich mit euch allen d'accord, dass a ein Array über 5 Elemente ist. Aber auch nur, weil die Zahl der int-Elemente noch unbekannt ist.
für
Code:
for(int i = 0; i < 5; i++) a[i] = new int[i];
würde ich allerdings erst wieder gerne wissen, was ist ein "Element".
Mhh eventuel könnte man auch sagen es hat 10 Elemente :-D die jeweils ein int[] array sind, so wird es zwar physikalisch nicht abgespeichert, aber wäre auch eine interpretation ;-)
So wie es da definiert ist, würde ich es als ein 50 elementiges Array sehen
Ich sage auch 5. Bei uns im Studium haben Sie uns oft gefoppt mit solchen Fragen.
Nimm die Fragen so wie Sie gestellt wurden alles andere sind Sachverhaltsquetschen und somit falsch. Ich denke mal dein erster Gedanke war schon der richtige.
hmm bei java könnte man in den qc mal nach schauen
php ok ka mag ich nciht
c++ denk ich auf jedenfall nicht
vb glaub ich eher auch nicht aber wer mag schon vb proggen is doch nur tierquälerei für mensch und maschiene?
da sind das doch mindestens 55 werte
oder sehr ich das falsch insofern nicht eine implementierung bzw eine optimierung in der richtung kommt durch den compiler
sollten es suma sumarum 55 werte sein
50 ints aufgeteilt auf die 5 10-feld-arrays
und nochmal 5 referenzen auf die 5 arrays << a
es könnte höchstens sein das intern nur ein array gemacht wird und da dann mit dem index hin und her gerechnet wird aber ichdenke das ne indirekte referenzierung schneller sein sollte.
Mhh ich lese da bei dir auch die 50 ints, komisch auf die kam ich auch :-D
wie das Physikalisch gespeichert wird, kann ich dir auch nicht sagen, aber es könnte gut als ein array mit den 50 werden hintereinander sein, könnte auch 5 einzelne arrays mit jeweils 10 sein, warte das wäre wenn die in einem array zusammen gefast werden ja ein großes array, da soweit ich weiß bei einem array die objekte direkt hintereinander gespeichert werden und nicht wie in einer verketteten Liste der pointer auf das nächste Objekt ;-)
Wenn du es so willst hast du auch noch die Referenz von a selbst und somit 56 Werte. Davon ein Pointer auf ein Array von 5 Pointern auf Arrays mit je 10 Integern.
Wie kommt ihr auf die Idee, dass Java den int[x][y] intern als int[x*y] anlegt? Abgesehen davon, dass das nicht der Fall ist, müsste man sich das spätestens überlegen, wenn [c]= new int[3][][/c] geschrieben wird. Oder wie wärs mit [c]array[0] = new int[] {1,2,3}[/c]...?
Mhh ich lese da bei dir auch die 50 ints, komisch auf die kam ich auch :-D
wie das Physikalisch gespeichert wird, kann ich dir auch nicht sagen, aber es könnte gut als ein array mit den 50 werden hintereinander sein, könnte auch 5 einzelne arrays mit jeweils 10 sein, warte das wäre wenn die in einem array zusammen gefast werden ja ein großes array, da soweit ich weiß bei einem array die objekte direkt hintereinander gespeichert werden und nicht wie in einer verketteten Liste der pointer auf das nächste Objekt ;-)
das meinte ich mit eigenimplementierung bzw optimirung --> und dabei ist in beidenfälen fraglich ob es wirklich ne optimierung ist. das würde davon abhängen was schneller geht über 1 referenz oder eine multiplikation.
intuitiv würde ich ref sagen, aber man weis ja nie ^^
naja aber in der frage ging es ja um das arrayarray (a) was 5 werte bzw insgesammt also 55.
aber nur die 50 ints währen solange falsch wie die optimierung nich bestätigt ist.
egal müste man mal testen
gibt es vllt in der reflections-api nich was um die größen auszulesen die allociert werden?
@darkscream auch war dementsprechend wäre a = 1 ref hmm könnte interesant werden sowas mal herauszufinden
@featzinator das wäre so wenn ich nich pauschal angeb das es 5 * 10 sein sollen aber so könnte es vereinfacht werden und optimiert von dem compiler indem ein großes angelegt wird
und nicht erst im nachhinein die einzelnen
Habe nie behauptet, das es so ist, nur das es so seien könnte und ja D4rkscr43m stimmt, dann reichen die 55 nicht.
Jedoch wurde ja nicht nach dem benötigten Speicher gefragt, sondern nach den Elementen des Arrays und wenn ich mich nicht verzähle, kann ich in ein int-Array der Größe 5*10 exakt 50 int Werte abspeichern ;-) in einem
Code:
int[] a = new int[5];
kann ich jedoch nur 5 int Werte speichern, was aber nicht die Frage war