2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

為什么要使用foreach循環?它有哪些優點和局限性?

更新時間:2021-04-01 來源:黑馬程序員 瀏覽量:

1577370495235_學IT就到黑馬程序員.gif


雖然Iterator可以用來遍歷集合中的元素,但寫法上比較煩瑣,為了簡化書寫,從JDK5開始,提供了foreach循環。foreach循環是一種更加簡潔的for循環,也稱增強for循環。foreach循環用于遍歷數組或集合中的元素,具體語法格式如下:

for(容器中元素類型臨時變量:容器變量){

     執行語句
}


從面的格式可以看出,與for循環相比,freach 循環不需要獲得容器的長度,也不需要根據索引訪容器中的元素,但它會自動遍歷容器中的每個元素。下面通過一個案例演示foreach循環的用法,如文件6-5所示。

文件Example05.Java

import java.util.*;

public static void main (String[]  args) {

          ArrayList list= new Arravtiotsn ( );       //創建ArrayList集合
 
          list.add ("aaa")                  // 向ArrayList集合中添加字符串元素


          list. add ( "bbb")

          list.add ("CCC");

          for (Object obj : list){          // 使用foreach循環遍歷ArravList對象

               System.out.println (obi) :   //取出并打印ArrayList集合中的元素
      }
   }
}


在6-6文件中,第4~7行代碼是聲明了一一個ArrayList集合并向集合中添加了3個元素;第8行代碼使用foreach循環遍歷ArrayList集合并打印??梢钥闯?,foreach循環在遍歷集合時語法非常簡潔,沒有循環條件,也沒有迭代語句,所有這些工作都交給虛擬機去執行了。foreach循環的次數是由容器中元素的個數決定的,每次循環時,foreach中都通過變量將當前循環的元素記住,從而將集合中的元素分別打印出來。


foreach循環的局限性
foreach循環雖然書寫起來很簡潔,但在使用時也存在一定的局限性。當使用foreach循環遍歷集合和數組時,只能訪問集合中的元素,不能對其中的元素進行修改。下面以一個String類型的數組為例,演示foreach循環的局限性,如文件6-6 所示。

文件6-6 Example06.java

public class Example06 {

static String[] strs = {"aaa",, "bbb", "ccc" );

public static void main (String[] args){

//foreach 循環遍歷數組

for (string str: strs) {

        str ="ddd";
}


System.out.println ("foreach循環修改后的數組:"+ strs[0] +","+

rs[1]+","+strs[2]);

for循環遍歷數組



For(int  i = 0;i< strs.length; 1++) {



strs[i] = "ddd";

}


System.out.printin ("普通for循環修改后的數組:"+ strs[0] +"," +


strs[i]

"+strs[2]) ;


}


文件6-6的中,分別使用foreach循環和普通for循環去修改數組中的元素。從圖6-12中的運行結果可在文件6-6循環并不能修改數組中元素的值。原因是第6行代碼中的str="ddd"只是將臨時變量str指向了一個新的字符串,這與數組中的元素沒有一點關系。而在普通for循環中,是可以通過索引的方式來引用數組中的元素并對其值進行修改的。

[案例1]  庫存管理系統

像商城和超市這樣的地方,都需要有自己的庫房,并且庫房商品的庫存變化應有專人記錄,這樣才能保證商城和超市正常運轉。

”區編寫一個程序,模擬庫存管理系統。該系統主要包括系統首頁、商品入庫功能、商品顯示和刪除商品功能。系統首頁及每個功能的具體要求如下。

(1)系統首頁:用于顯示系統所有的操作,并且可以選擇使用某一一個功能。

(2)商品人庫功能:首先提示是否要錄人商品,根據用戶輸人的信息判斷是否需要錄人商品。如果需要錄人商品,則需要用戶輸人商品的名稱、顏色、價格和數量等信息。錄入完成后,提示商品錄人成工并打印所有商品。如果不需要錄入商品,則返回系統首頁。

(3)商品顯示功能:用戶選擇商品顯示功能后,在控制臺打印倉庫所有商品信息。

(4)刪除商品功能:用戶選擇刪除商品功能后,根據用戶輸人的商品編號刪除商品,并在控制臺打印除后的所有商品。

注意:本案例要求使用Cllection集合存儲自定義的對象,并用迭代器、增強for循環遍歷集合。

[案例2]  學生管理系統

在所學校中,對學生人員流動的管理是很麻煩的,本案例要求編寫個學生管理系統, 實現對學生信息的添加、刪除、修改和查詢功能。系統首頁及每個功能的具體要求如下。

(1)系統首頁:用于顯示系統所有的操作,并根據用戶在控制臺的輸人選擇需要使用的功能。

(2) 查詢功能:用戶選擇該功能后,在控制臺打印所有學生的信息。

(3)添加功能:用戶選擇該功能后,要求用戶在控制臺輸人學生學號、姓名、年齡和居住地的基本信息。在輸人學導時,判斷學號是否被占用,如果被占用則添加失敗,并給出相應的提示:反之則提示添加成功。

(4)刪除功能:用戶選擇該功能后,提示用戶在控制臺輸人需要刪除學生的學號,如果用戶輸人的學號存在則提示刪除成功,反之則提示刪除失敗。

(5)修政能:用戶選擇該功能后,提示用戶在控制臺輸人需要修改的學生學號、姓名年齡利居住地學生價息、并使用輸人的學生學號判斷是否有此人,如果有則修改原有的學生信息,反之則提樂需要核成的,學生信息不存在。

(6)退出功能:用戶選擇該功能后,程序正常關閉。

注意:本案例要求使用List集合存儲自定義的對象,使用List集合中的常用方法實現相關的操作。





猜你喜歡:

怎樣在hadoop虛擬機上安裝和配置JDK?

JDK環境變量配置win10視頻教程【黑馬程序員】

JDK8有哪些新特性?[視頻介紹]    

黑馬程序員java培訓

分享到:
在線咨詢 我要報名
和我們在線交談!