2013-12-24 3 views
0

Я работаю в программировании для последних пар годами, но сегодня я увидел новую вещь, которую искал в сети, но не могу найти идеальный ответ. Существует код, который гласит:Для цикла в Java

for(String string : mCha) // line 1 
{ 
// loop working 
} 

Я хочу спросить, что означает линия 1? Как я изучал, что там должно быть 3 параметров в течение цикла, и если мы не хотим, чтобы дать, что чем следующий метод должен следовать

for(;;) 
{ 
} 

Пожалуйста, объясните мне, как я совершенно новой для этого синтаксиса и я искал в сети, но не может найти ничего полезного.

+2

Также см http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html – NPE

+0

Этот синтаксис определен в [Расширенной 'for' заявления] (HTTP : //docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2) раздела спецификации. – McDowell

+0

В качестве примечания, 'for-each' работает не только на массивах, но и на любом внедрении [' Iterable '] (http://docs.oracle.com/javase/7/docs/api/java/lang/ Iterable.html), который включает в себя все файлы '' Collection '' (http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html). – JimmyB

ответ

8
for(String string : mCha) // line 1 
{ 
    // loop working 
} 

Является сокращением для:

for (Iterator<String> i = mCha.iterator(); i.hasNext();) { 
    String string = (String)i.next(); 
    //loop working 
} 

(при условии, что mCha реализует Iterable, массивы обрабатываются по-разному, см the JLS about the enchanced for statement)

Пример:

for(String string : mCha) // line 1 
{ 
    System.out.ptinln(string) // For each element of my collection, display it. 
} 
+0

Простой и до точки +1 –

+2

... предполагая, что 'mCha' не является' String [] ' –

+0

@PeterLawrey. Вы правы. JLS утверждает, что случай массива явно обрабатывается по-разному: http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.14.2 –

2

Я хочу спросить, что означает линия 1?

Это для каждого цикла в java. Это эквивалентно

Iterator<String> it = mCha.iterator(); 
while(it.hasNext()){ 
    String string = it.next(); 
    // loop working 
} 

Для каждого цикла был введен в java 1.5. См. The For-Each Loop.

0
for(String string : mCha) // line 1 
{ 
// loop working 
} 

здесь mCha представляет собой набор может быть array, list или что-нибудь, и цикл for (это особый случай for цикла) выше сканирует каждый string от начала и до конца в array или list

0

Он называется усиленным циклом. Он был представлен на Java 5. Он похож на работу со старым циклом, который использует индекс. Оба они могут использоваться для перебора коллекций и массивов.

Old for loop: В этом формате цикла for вы имеете доступ к индексной переменной, а также можете пропустить индекс по своему усмотрению.

for(int i=0;i<size;i++){ 
    //code 
} 

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

for(String string : mCha) // This means that "For each String element in the collection/array mCha" 
{ 
    //code 
} 

Подробнее о расширенных для петель here

0

Основной цикл был продлен в Java 5, чтобы сделать итерации по массивам и другим коллекциям более удобным.Этот новый оператор for называется расширенным для или for-each (потому что он называется этим на других языках программирования). Я также слышал, что это называется циклом for-in.

Простой пример, чтобы объяснить для каждого цикла

class ForEachExample1{ 
    public static void main(String args[]){ 
    int arr[]={12,13,14,44}; 

    for(int i:arr){ 
    System.out.println(i); 
    }  
} 
} 

также см The For-Each Loop

0

Смотрите этот пример ....

List v = new ArrayList(); 
v.add("aa"); 
v.add("bb"); 
v.add("cc"); 
for (Object str : v) { 
    System.out.println(str.toString()); 
} 

Это даст выходной сигнал

aa 
bb 
cc 


for (Object str : v) Это путешествие по коллекции объектов.

+0

забыть о 'Vector', используйте 'List': http://stackoverflow.com/questions/1386275/why-is-java-vector-class-considered-obsolete-or-deprecated – zapl

0
This is known as for-eachloop introduced in java5. 
for(String string : mCha) // line 1 
{ 
// loop working 
} 
It is used to iterate with both collections and arrays same as normal for loop 

Syntax: 

for(data_type variable : array | collection){} 

Example: 

    int[] array = {1,3,6}; 
    int sum = 0; 
    for (int i : array) { 
     sum += i; 
    } 
    System.out.println("Total sum":+sum); 

I hope it is clear 
Смежные вопросы