10
votes

Dans un Java amélioré pour la boucle, est-il prudent d'assumer que l'expression d'être en boucle sera évaluée une seule fois?

en Java, une boucle pour chaque boucle.
Si j'ai une méthode qui génère un tableau, appelé genarray () .

Dans le code suivant, le tableau sera-t-il ré-généré à chaque fois en appelant genarray () ? Ou java appelle une fois la méthode et stockera une copie à partir du tableau? xxx

merci


2 commentaires

Bien sûr, le moyen le plus simple de savoir est de tester cela ... un simple système.Out.println () à Genarray () suffit!


Dupliqué possible de Java foreach Efficacité


3 Réponses :


5
votes

Java appellera Genarray () une fois, obtenez l'objet itérateur et appelez-le plusieurs fois.


1 commentaires

Cette réponse est partiellement faux . Oui, Java appellera genarray () une seule fois mais, non, java.lang.array n'est pas un sous-type de itérable alors Java gagné 'T Obtenir un objet Itérateur.



5
votes

Il ne devrait être utilisé que une fois - c'est la même chose que l'appelant ceci:

  String[] strings = genArray();
  for (String s : strings) {
  ...


0 commentaires