Java для (x: y) выполнения - PullRequest
       3

Java для (x: y) выполнения

14 голосов
/ 02 июня 2011

У меня есть следующее для цикла:

for(String s : someString.split("\\s+")){
   //do something
}

Выполняет ли java метод split () каждый раз, когда цикл повторяется, или он делает это только один раз и сохраняет временный массив для повторения?

Ответы [ 4 ]

19 голосов
/ 02 июня 2011

Он делает это только один раз, использует этот массив и проходит через него.

Редактировать: из Mat Это ссылка

3 голосов
/ 02 июня 2011

Сохраняет массив во временной переменной перед использованием.

2 голосов
/ 02 июня 2011

Нет, разбиение выполняется один раз для строки, и после этого цикл повторяется по результату

1 голос
/ 02 июня 2011

Метод split вызывается только один раз. Подумайте о структуре (также известной как «для каждого») следующим образом:

  • Второй аргумент оценивается и сохраняется в течение цикла.
  • Если аргумент дает Iterable или является массивом (особый случай), то выполняется проверка, чтобы убедиться, соответствует ли тип первого аргумента возвращаемым элементам.
  • Процесс входит в цикл и выполняет код внутри области видимости и завершает работу, когда больше не осталось элементов.

Более подробную информацию можно получить здесь: http://www.leepoint.net/notes-java/flow/loops/foreach.html

P.S .: Это работает с минимумом Java 5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...