Как поддерживает java-массив (примитивный тип) для механизма цикла Each [duplicate]

Для mac:

1.Copy по умолчанию my-default.cnf to /etc/my.cnf

sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf

2. Измените sql_mode в my.cnf, используя любимый редактор и установите его на этот

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

сервер 3.Restart MySQL.

mysql.server restart
16
задан Woot4Moo 10 January 2013 в 21:38
поделиться

7 ответов

Это эквивалентно:

final int len = number.length;
for(int j = 0; j < len; j++) {
  int i = number[j];
}

Обратите внимание, что forEach не будет оценивать длину в каждом цикле. Это может быть также устранено JVM, но особенно в случае коллекций, где некоторые будут использовать

for(int j = 0; j < collection.size(); j++) {

, он делает (небольшую) разницу более быстрой

int len = collection.size()
for(int j = 0; j < len; j++) {
1
ответ дан AlexWien 31 August 2018 в 10:03
поделиться

Немного поздно, но вот оно.

Компилятор знает, используете ли вы оператор for-each для коллекции или для массива.

Если используется для сборщик переводит цикл for-each в эквивалент для цикла, используя Iterator.

Если используется для массива, компилятор переводит цикл for-each в эквивалент для цикла с использованием индекса переменная.

Вот описание на oracle.com

7
ответ дан DwB 31 August 2018 в 10:03
поделиться

В вашем коде вы выделяете массив из 10 целых чисел в памяти и получаете ссылку на него. В цикле for вы просто перебираете каждый элемент в массиве, который изначально будет равен 0 для всех элементов. Значение каждого элемента будет сохранено в переменной i, объявленной в вашем for-loop, когда вы повторяете элементы массива.

3
ответ дан Edwin Dalorzo 31 August 2018 в 10:03
поделиться

это эквивалентно:

for(int x = 0; x < number.length; x++) {
  int i = number[x];
}
2
ответ дан GreyBeardedGeek 31 August 2018 в 10:03
поделиться

IntStream.range(1,4) можно использовать, используя java 8.

0
ответ дан Lonely Neuron 31 August 2018 в 10:03
поделиться

Цикл эквивалентен:

for(int j = 0; j < number.length; j++) {
  int i = number[j];
  ...
}

, где j - внутренне сгенерированная ссылка, которая не конфликтует с обычными идентификаторами пользователя.

13
ответ дан Patricia Shanahan 31 August 2018 в 10:03
поделиться

Для каждой над массивом по существу это «сахар» над этой конструкцией:

for(int i = 0;i<number.length;i++)
{  
}

Я бы предположил, что это было предоставлено в виде конструкции языка, чтобы люди могли использовать расширенный цикл для цикла структура, которая была повторена по-старому.

1
ответ дан Woot4Moo 31 August 2018 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: