2016-10-17 5 views
-4

Код 1В чем разница между нижеприведенным кодом 1 и кодом 2?

String ccMailAddresses="[email protected],[email protected]"; 
String ccMailAddressArray[]=ccMailAddresses.split(","); 
for (int index = 0; index < ccMailAddressArray.length; index++) { 
    System.out.println(ccMailAddressArray[index]); 
} 

Код 2

String ccMailAddresses="[email protected],xy"; 
for (String ccMailAddress : ccMailAddresses.split(",")){ 
    System.out.println(ccMailAddress); 
} 

Что лучше практика? Является ли какая-либо производительность удачной в любом из них?

+0

один для цикла, а другой - foreach/усиление цикла (используется для перемещения, когда нет необходимости в индексе). –

+0

Код 1 является бессмысленным, потому что условие 'if' всегда верно. Лучше всего не писать случайные тавтологические утверждения 'if'. –

+0

На самом деле нет разницы. «Код 1» делает ненужную проверку, если массив равен «null». Я думаю, что 'split()' возвращает только пустой массив, но никогда 'null'. – displayname

ответ

1

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

В этом смысле: code2 требует меньше усилий, чтобы читатель понял, что происходит. Итак, с этой точки зрения, это определенно «лучше», чем code1.

Производительность разумная, между ними не должно быть различий.

0

Код делает почти то же самое. Оператор if в Code1 бесполезен. По-моему, это всегда так.

Разница заключается в том betweeen те две строки:

for (int index = 0; index < ccMailAddressArray.length; index++) 

Здесь ваш код будет выполняться до тех пор, пока ваш индекс больше, чем длины вашего массива.

for (String ccMailAddress : ccMailAddresses.split(",")) 

Код в этом цикле выполнен для каждого элемента вашего массива.

Но имейте в виду, что результат тот же!

надеется, что это поможет!

0

Нет разницы между обоими кодом:

code1 традиционной для петли, и code2 для каждого цикла введена для сбора Java для перебора.

0

Код 1

String ccMailAddresses="[email protected],[email protected]"; 
String ccMailAddressArray[]=ccMailAddresses.split(","); 
if(ccMailAddressArray!=null){ 
    for (int index = 0; index < ccMailAddressArray.length; index++) { 
     System.out.println(ccMailAddressArray[index]); 
    } 
} 

В этом примере вы делаете ненужный чек против ccMailAddressArray потому split() никогда не вернется null. Цикл for здесь предоставляет вам index. Это может быть полезно иногда, например, если у вас есть массив color, который имеет цвет, сохраненный для каждого элемента. Затем вы можете использовать color[index], чтобы выбрать цвет для каждого элемента и нарисовать его где-нибудь. Пожалуйста, теперь, что это немного сложнее, чем просто перебирать все предметы. Таким образом, вы используете эту версию всякий раз, когда вам нужен index.

Код 2

String ccMailAddresses="[email protected],xy"; 
for (String ccMailAddress : ccMailAddresses.split(",")){ 
    System.out.println(ccMailAddress); 
} 

В этом примере вы по существу то же самое. Цикл for-each, который вы используете здесь, делает то же самое для вас.Единственная разница в том, что здесь у вас нет index. Это немного короче и проще, что упрощает чтение.

So: Используйте для каждого (код 2), когда можете, потому что немного проще понять, что вы донгом. Если вы используете индекс, основанный на цикле (код 1), я предполагаю, что вы хотите сделать что-то с index, что также подразумевает, что могут быть задействованы некоторые более сложные вещи.

0

Спасибо за ответ stackoverflowgigs.

Мой вопрос решен сейчас !. Поскольку один из моих старших дал мне обзорный комментарий о коде 2, это удар производительности, неоднократно вызывающий ccMailAddresses.split(",") для каждого цикла.

Смежные вопросы