for 和 foreach 的區別


  ------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a>、期待與您交流! ----------

for 循環結構和 foreach 循環結構相比起來 我更加喜歡 for 循環, 原因是該循環結構的功能更加強大,下面給大家做一些例子,看看兩者之間有什麼區別,什麼樣的場合應該使用哪種循環。

1、爲什麼要使用循環結構?
     很多情況下,我們需要訪問一系列的數據,比如說,想要將二維數組中的數據用表格的方式進行打印輸出,那如果沒有循環我們將會使用如下的方式來實現
  1.         public static void main(String[] args) {
  2.                 //創建一個二維數組,其實就是一張成績表
  3.                 int score[][] = {{79,80,100},{80,66,93},{99,59,80},{99,59,88},{67,56,80},{87,89,90}};
  4.                 
  5.                 //打印二維數組中的內容
  6.                 System.out.println("學生編號\t數學\t英語\t語文");
  7.                 System.out.println(1+"\t"+score[0][0]+"\t"+score[0][1]+"\t"+score[0][2]);
  8.                 System.out.println(2+"\t"+score[1][0]+"\t"+score[1][1]+"\t"+score[1][2]);
  9.                 System.out.println(3+"\t"+score[2][0]+"\t"+score[2][1]+"\t"+score[2][2]);
  10.                 System.out.println(4+"\t"+score[3][0]+"\t"+score[3][1]+"\t"+score[3][2]);
  11.                 System.out.println(5+"\t"+score[4][0]+"\t"+score[4][1]+"\t"+score[4][2]);
  12.                 System.out.println(6+"\t"+score[5][0]+"\t"+score[5][1]+"\t"+score[5][2]);
  13.         }
複製代碼
    從上面的例子可以看出,如果二維數組中的內容越多,那麼我們就需要寫更多的代碼來打印數組中的數據。
     然而爲了簡化我們的代碼量,循環結構就派上用場了。
2、如何使用循環結構?
     下面我們來看看使用循環結構如果簡化我們的代碼量
  1. public static void main(String[] args) {
  2.          //創建一個二維數組,其實就是一張成績表
  3.          int score[][] = {{79,80,100},{80,66,93},{99,59,80},{99,59,88},{67,56,80},{87,89,90}};
  4.                 
  5.          //打印二維數組中的內容
  6.         System.out.println("學生編號\t數學\t英語\t語文");
  7.                 
  8.         //使用循環結構打印數組
  9.         for (int i = 0; i < score.length; i++) {
  10.               System.out.println(i+1+"\t"+score[i][0]+"\t"+score[i][1]+"\t"+score[i][2]);
  11.         }
  12.         }
複製代碼
     可以看出,使用循環結構進行處理後,打印的代碼只寫了一遍,而不管是幾千條數據還是有幾萬條數據,打印的代碼也是隻寫一遍,照樣可以全部打印出來,這就是循環結構所帶來的好處。
      那麼循環結構除了使用 for 循環之外,還有一個循環結構,那就是 foreach 循環, 其實 foreach 循環 和 for 循環結構的寫法是類似的,都是使用 for 關鍵字,只是循環表達示不一樣。
      如何不一樣?  我們來看下面的例子
   
  1.         public static void main(String[] args) {
  2.                 //創建一個二維數組,其實就是一張成績表
  3.                 int score[][] = {{79,80,100},{80,66,93},{99,59,80},{99,59,88},{67,56,80},{87,89,90}};
  4.                 
  5.                 //使用循環結構打印數組
  6.                 int index = 1;//聲明循環變量
  7.                 
  8.                 for (int[] i : score) {
  9.                         
  10.                         System.out.println(index+"\t"+i[0]+"\t"+i[1]+"\t"+i[2]);
  11.                         
  12.                         index++;//遞加循環變量
  13.                 }
  14.         }
複製代碼


     可以看出,兩者循環在表達示中不大一樣。
     第一、for 循環需要自己去指定循環的次數,而 foreach 不需要指寫循環次數
     第二、foreach 循環中,循環變量的定義和遞加要寫在括號外面, 而 for 循環則可將循環變量的定義和遞加寫在裏邊
     第三、使用foreach循環中來的結果如果是一個基本數據類型的值,則該值不能進行賦值,如果是引用類型的值,就可以賦值。
3、在什麼情況下使用循環結構?
     那現在同樣的一道題,使用 for 和 foreach 都能夠做到,那什麼時候用 for ? 什麼時候用 foreach 呢?
     第一、foreach 常用在集合遍歷上
     第二、foreach 一般用來讀數據,for 一般用來操作數據(如:修改)
     第三、for通常用於遍歷已知次數的集合,foreach 通常用於遍歷未知次數的集合

     好了,關於 “for 和 foreach 的區別 ” 就寫到這,呃, 歡迎各位大神來指點一二。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章