foreachサイクル詳細編

5259 ワード

Java SE 5は、アクセス項目からなるシーケンスをカウントするためにint変数を作成する必要がなく、foreachが自動的に各項目を生成することを示す、配列とコンテナ、すなわちforeach構文のためのより簡潔なfor構文を導入した.
foreachループは,配列と集合をより簡潔に遍歴する.foreachループを使用して配列と集合要素をループする場合、配列と集合の長さを取得する必要はありません.インデックスに基づいて配列要素と集合要素にアクセスする必要はありません.foreachループは、配列と集合の各要素を自動的にループします.
foreachループの構文フォーマット:
for (type variableName : array | collection)//array    collection   /  
{	
	// variableName           ...
}
  • typeは配列要素または集合要素のタイプであり、variableNameはパラメータ名であり、foreachループは配列要素、集合要素を変数に自動的に割り当てます.次の例を示します:
  • public static void main(String[] args){
    
    	String[ ] books = {"Hello","World","!"};
    	//  foreach          
    	//   book             
    	for(String book : books){
    		System.out.println(book);
    	}
    }
    
  • foreachループは通常のループとは異なり、ループ条件を必要とせず、ループ反復文を必要とせず、これらはシステムによって完了し、foreachループは配列の各要素を自動的に反復し、各要素が1回反復されるとforeachループは自動的に終了する.

  • 注意:このようなループパスは、通常、ループ変数に値を付けないでください.このような文法は許容されるが、あまり実用的な意味はなく、誤りを引き起こしやすい.次の手順に従います.
    public static void main(String[] args){
    
    	String[ ] books = {"Hello","World","!"};
    	//  foreach          ,
    	//   book             。
    	for(String book : books){
    		book = "  !   ";		 //    
    		System.out.println(book);
    	}
    	System.out.println(books[0]);//             
    }
    

    上記のプログラムを実行した結果、
    	  !   
    	  !   
    	  !   
    	Hello
    
  • foreachサイクルで配列配列に値を付与した結果、配列要素を正常に遍歴することができず、各配列要素の値を正しく取り出すことができなかった.また,最初の配列要素に再アクセスすると,配列要素の値は依然として変化していないことが分かった.
  • は、foreachを使用して配列要素に反復アクセスする場合、foreachのループ変数は一時変数に相当し、システムは配列要素をこの一時変数に順次付与しますが、この一時変数は配列要素ではなく、配列要素の値を保存しているだけです.したがって、配列要素の値を変更する場合は、このforeachループは使用できません.

  • 注意:foreachループ反復配列要素を使用する場合、配列要素の値を変更することはできませんので、foreachのループ変数に値を付けないでください.