在軟件世界中,不論在開發語言的使用中(如C、C++、Java等),亦或是數據庫中(SQL)循環語句簡直是無處不在。下面對循環語句作一個小小的彙總。
while(條件條件){
//循環體
}
do{
//循環體
}while(循環條件);
for( 起始條件;終止條件 ;循環增量 ){
//循環增量
}
這些語法符合一般的程序語言的語法。
(以for語句爲例)
在高級語言中,for語句的語法大致相近,語法格式大致是:
for(起始條件;終止條件;循環增量){
//循環休
}
在實際的應用過程中,不同的語言,可能會有些許不同。如C++和Java兩中語言對for語句的使用,在語法上就稍微有點不同。
在java中,可以在for和條件語句中直接申明循環變量for(int i = 0;i<m;i++){} ;而在C++中則不可以這樣使用
另外不得不介紹的是,在JDK中提供的增強for循環的機制。比如,你要將從數據庫中取出的一批數據遍歷出來,如下:
從數據庫中取出一批用戶,存儲在list中,常規方法,一般是:
for(int i = 0; i<list.size();i++){
//循環操作
}
使用這種方式進行循環,有幾個弊端:
1. 每進行一次循環操作,都要計算一下list的大小,如果list的裏面存儲的數據不多的話,這些計算基本沒什麼影響,但如果裏面存儲的數據很多,也就是說,取出list中數據的循環次數很多,每次都計算相應的list的大小,這就會影響程序的執行效率了。
2. 終止條件:i<list.size() ; 有些對於數組瞭解不深的學習者,在for語句中,經常會出現i<=list.size() ;而這樣的終止條件,很顯然會運行出錯(數組越界)
爲了解決以上弊端,jdk提供了增強for循環機制,語法如下:
for( 變量類型 變量名 : 需要遍歷的容器 ){
//循環體
}
需要注意的是,在java中,使用增強for遍歷map集合與常規的List和Set集合的遍歷方式有些不同。在遍歷之前,需要先將Map集合轉換成Set集合(map.EntrySet(); 該方法的返回類型是 Set<Entry<K , V >>),然後再使用增強for循環進行遍歷。
下面是一個簡單的示例
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("zhangsan",20);
map.put("lisi", 16);
map.put("wangwu", 23);
Set<Entry<String ,Integer>> list = map.entrySet();
for(Entry<String,Integer> entry:list){
System.out.println("name:"+entry.getKey()+",age:"+entry.getValue());
}