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

У меня есть цикл for:

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

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

Ответ 1

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

Edit: from Mat Это ссылка

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

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

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