length-Methode bei for-Schleife

Wieso sollte das so sein?
Foreach wurde extra für arrays entwickelt, und da man normalerweise sowieso nur an den Werten
interessiert ist, was ist daran bitte “dumm” ? Ich finde das ist echt ein bisschen weit hergeholt.
Ich kann zwar nicht so sehr mitreden wegen geringer ( lebens und ) programmiererfahrung aber ich persönlich
benutze foreach immer dann wenn ich die zählvariable nicht brauche.

Man lese auch hier nach:

http://schabby.de/java-for/

ForEach ist für Iterables also Collections. Das heisst sie funktionieren nicht nur für Arrays. Arrays werden erst in Iterables umgewandelt, was aber völlig transparent geschieht.

[QUOTE=mymaksimus][…]Ich kann zwar nicht so sehr mitreden wegen geringer ( lebens und ) programmiererfahrung aber ich persönlich benutze foreach immer dann wenn ich die zählvariable nicht brauche.
[…]
http://schabby.de/java-for/[/QUOTE]

Naja, man sollte dennoch wissen was man da vor sich hat. Ein for-each erzeugt immer einen Iterator, was wieder eine zusätzliche Indirektion bedeutet und das kann sich summieren. Der Content in dem Link ist auch nicht der Beste da er über ein Array mit primitiven int-Werten iteriert die dann erst mal alle schön dem Autoboxing zum Opfer fallen und das macht sich definitiv bemerkbar.

Ich habe mal im JFO gekramt, da hatte ich schon mal etwas geschrieben http://www.java-forum.org/java-basics-anfaenger-themen/88698-each-loop-2.html#post615911. Ob das noch den Tatsachen entspricht müsste überprüft werden. Die Antwort darunter gilt aber immer noch, Augen auf wie Iteratoren implementiert wurden.

Ich denke immer, die entwickler haben sich ja was dabei gedacht…

Verbessert mich wenn mich ich falsch liege, aber ist die Reihenfolge der Abarbeit bei einer for each Schleife nicht undefiniert?

[QUOTE=Unregistered]Verbessert mich wenn mich ich falsch liege, aber ist die Reihenfolge der Abarbeit bei einer for each Schleife nicht undefiniert?[/QUOTE]Ansichtssache… die Reihenfolge definiert sich durch die jeweiligen Iteratoren, deren Reihenfolge selbst bekanntlich undefiniert ist. Bei Lists und Arrays sollte sie also weitgehend definiert sein.

[QUOTE=ThreadPool]Naja, man sollte dennoch wissen was man da vor sich hat. Ein for-each erzeugt immer einen Iterator, was wieder eine zusätzliche Indirektion bedeutet und das kann sich summieren. Der Content in dem Link ist auch nicht der Beste da er über ein Array mit primitiven int-Werten iteriert die dann erst mal alle schön dem Autoboxing zum Opfer fallen und das macht sich definitiv bemerkbar.
[/QUOTE]
Eben, ich meine sogar, das primitive in Arrays einer der meistverwendeten Anwendungsfaelle fuer Arrays ist.

Wenn man mit einer normalen for Schleife keinen Iterator verwenden wuerde, wuerde man IMHO auch keine foreach einsetzten.

[QUOTE=maki]Eben, ich meine sogar, das primitive in Arrays einer der meistverwendeten Anwendungsfaelle fuer Arrays ist.[/QUOTE]Ich meine ja, das die Fälle in denen man ein Array primitiver Typen einsetzt* entweder gegen OOP-Regeln verstoßen oder das zu Grunde liegende Problem in einer anderen Programmiersprache gelöste werden sollte.

*) Damit meine ich das Array an sich, nicht das es ein Array primitiver Typen ist…

bye
TT