Я рекомендовал бы смотреть на Проект и 960 Объединенных энергосистем .
Помимо выполнения сброса и включая CSS фиксирует для Internet Explorer, они оба дадут Вам легкое для работы с сеткой дизайна, которая будет заботиться о большой утомительной тонкой настройке при создании основанных на CSS разметок.
О расширенном операторе for Спецификации языка Java пишут:
Расширенный оператор for имеет форма:
EnhancedForStatement: for (Идентификатор типа VariableModifiersopt: выражение)
Выражение должно иметь тип
Итерируемый
, иначе он должен иметь тип массива (§10.1) или время компиляции возникает ошибка.Область объявленной локальной переменной в части FormalParameter расширенный
для
утверждения (§14.14) содержащееся ЗаявлениеЗначение расширенного
для
заявление дается переводом на базовыйдля оператора
.Если тип
Выражение
является подтипIterable
, тогда пустьI
будет тип выражения Выражение.iterator ()
. Расширенный оператордля
эквивалентен к основномудля
утверждению форма:for (I #i = Expression.iterator (); # i.hasNext ();) { Идентификатор типа VariableModifiersopt = # i.next (); утверждение }
Где
#i
генерируется компилятором идентификатор, отличный от любого другие идентификаторы (сгенерированные компилятором или иначе), которые входят в сферу действия (§6.3) в точке, где усилено дляВ противном случае Выражение обязательно имеет тип массива
T []
. ПустьL1 ... Lm
- (возможно, пустая) последовательность этикетки, непосредственно предшествующие расширендля оператора
. Тогда значение расширенного оператора for дается следующим основнымдля
инструкция:T [] a = Выражение; L1: L2: ... Lm: for (int i = 0; i
Где a и i генерируются компилятором идентификаторы, отличные от любых другие идентификаторы (сгенерированные компилятором или иначе), которые входят в объем точка, где усилено выражение для
Итак, в вашем случае genArray ()
возвращает не подтип Iterable
, а тип массива, поэтому ваш расширенный оператор for
будет эквивалентно следующему базовому оператору for
:
String[] a = genArray();
...
for (int i = 0; i < a.length; i++) {
String s = a[i];
// ...
}
И genArray ()
, таким образом, будет вызываться только один раз (но принятый в настоящее время ответ частично неверен).
Java вызовет genArray () один раз, получит объект итератора и вызовет его несколько раз.
К нему следует привыкнуть только один раз - это то же самое, что назвать это:
String[] strings = genArray();
for (String s : strings) {
...