一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 老生常談foreach(增強(qiáng)for循環(huán))和for的區(qū)別

老生常談foreach(增強(qiáng)for循環(huán))和for的區(qū)別

2020-12-26 14:48看清你的未來 Java教程

下面小編就為大家?guī)硪黄仙U刦oreach(增強(qiáng)for循環(huán))和for的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

首先說一下foreach有的也叫增強(qiáng)for循環(huán),foreach其實(shí)是for循環(huán)的一個(gè)特殊簡(jiǎn)化版。

再說一下foreach的書寫格式:

for(元素類型  元素名稱 : 遍歷數(shù)組(集合)(或者能進(jìn)行迭代的)){

語句

 }

foreach雖然是for循環(huán)的簡(jiǎn)化版本,但是并不是說foreach就比for更好用,foreach適用于循環(huán)次數(shù)未知,或者計(jì)算循環(huán)次數(shù)比較麻煩情況下使用效率更高,但是更為復(fù)雜的一些循環(huán)還是需要用到for循環(huán)效率更高。

我們看看下面的例子:

?
1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //foreach循環(huán)
  for(String str : arr){       //這里的str就是為了獲取每次循環(huán)的arr中的值
   System.out.println(str);       //就相當(dāng)于 String str=arr[i]
  }
 }

但是相比較之下我們用for循環(huán)輸入就略顯麻煩

?
1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //for循環(huán)
  for(int i=0;i<arr.size();i++){
   System.out.println(arr.get(i)); //要獲取list中元素需要用get方法
  }
 }

除了這種普通的集合還可以對(duì)像map這種鍵值對(duì)使用

例如:

?
1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
  Map<String,String> mapstr = new HashMap<String,String>();
  mapstr.put("王", "男");
  mapstr.put("李", "男");
  mapstr.put("張", "女");
                      //entrySet方法是為了獲取鍵值對(duì)的集合
  for(Map.Entry<String, String> s : mapstr.entrySet()){ //這里的Map.Entry<String, String>其實(shí)就是一個(gè)類型 用來表示鍵值對(duì)的類型
   System.out.println("key="+s.getKey());   //這里其實(shí)還是相當(dāng)于 s=maostr.entrySet,只不過s存儲(chǔ)的是鍵值對(duì)。
   System.out.println("value="+s.getValue());  //所以可以用get方法獲取出來存儲(chǔ)的鍵值對(duì)。
  }
 }

另外foreach不支持在循環(huán)中添加刪除操作,因?yàn)樵谑褂胒oreach循環(huán)的時(shí)候數(shù)組(集合)就已經(jīng)被鎖定不能被修改,否則會(huì)報(bào)出java.util.ConcurrentModificationException異常

例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //foreach循環(huán)
  for(String str : arr){    
   System.out.println(str);  
   arr.add("1");     //對(duì)arr進(jìn)行添加
  }
 }

關(guān)于不能添加刪除原理以及如何在foreach中添加刪除我們下篇再說。

所以總結(jié)如下:

foreach適用于只是進(jìn)行集合或數(shù)組遍歷,for則在較復(fù)雜的循環(huán)中效率更高。

foreach不能對(duì)數(shù)組或集合進(jìn)行修改(添加刪除操作),如果想要修改就要用for循環(huán)。

所以相比較下來for循環(huán)更為靈活。

以上這篇老生常談foreach(增強(qiáng)for循環(huán))和for的區(qū)別就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/XiaojianGo/archive/2017/09/04/7471860.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 好男人资源免费播放在线观看 | 日韩大片在线 | 黄情视频| 五月天婷婷网亚洲综合在线 | 91麻豆国产福利在线观看 | 男人的天堂在线 | 亚洲成人网页 | 国产精品国产三级在线专区 | 男人天堂bt | 日本一区二区视频在线 | 白白国产永久免费视频 | 国产精品国产三级国产专区不 | 91精品啪在线观看国产91九色 | 国产女主播福利在线 | 免费国产网站 | 无限在线观看免费入口 | 久久艹综合 | 王晶经典三级 | 色里番52kkm全彩 | 国产精品成人一区二区 | 国产中文视频 | 成人小视频在线观看免费 | 欧美日韩国产超高清免费看片 | 无码国产成人午夜在线观看不卡 | 欧美色影视| 青草香蕉精品视频在线观看 | 国产精品视频人人做人人爱 | 青青国产精品 | 波多野结衣中文丝袜字幕 | 日韩天堂在线 | 精品免费tv久久久久久久 | 青草国产福利视频免费观看 | 四虎影视永久在线 | 91精品国产91热久久久久福利 | 国产99视频精品免费视频7 | 欧美精品国产一区二区三区 | 亚洲国产成人精品激情 | 日韩制服丝袜在线观看 | 欧美同性videos | 欧美一级特黄特色大片免费 | 国产精品久久久久影院色老大 |