for
for一個(gè)可以對(duì)任意提供迭代器(iterator)的對(duì)象進(jìn)行遍歷的函數(shù).
首先我們先要明白一個(gè)概念:迭代器(iterator),什么是迭代器?它有什么用?
一句話概括一下就是:數(shù)據(jù)集合按照順序進(jìn)行遍歷,就是迭代.迭代器就是提供數(shù)據(jù)遍歷的一種工具.

稍微講解一下上面代碼:
首先呢,定義了一個(gè)list,list里面有12345,5個(gè)int型的參數(shù).
然后對(duì)這個(gè)list使用for循環(huán)進(jìn)行遍歷,逐個(gè)輸出里面的參數(shù).
for循環(huán)的寫(xiě)法呢 for (num in list)可以理解為,num是list的參數(shù),我們循環(huán)一次,就去list里取一個(gè)數(shù),然后打印出來(lái).
在寫(xiě)法上與java 的 foreach非常像,java代碼如下:
for(int num : list) {
.........
}
// 語(yǔ)法含義
for(返回值類(lèi)型 返回值 : list) {
.........
}
while
先看一段代碼:

代碼中定義了一個(gè)變量num,值為10;
然后使用while語(yǔ)句,while(真或假)中是一個(gè)布爾表達(dá)式,如代碼所表示,num是否大于1,如果大于1,那就打印這個(gè)值;一直到num值為1時(shí)候,這時(shí)候這個(gè)num>1就不成立,所以打印到2就停止了.
這里要注意一下num--,--在變量后面表示的是先打印變量在對(duì)其減一運(yùn)算,如果--在變量前,就是先運(yùn)算再打印,下面我們看一下--在前的輸出情況:

你會(huì)發(fā)現(xiàn)--在后的輸出是10 9 8...,而--在前的輸出是9 8 7...
這時(shí)候你可能有疑問(wèn)了,為什么會(huì)輸出1,上面不是判斷只有大于1時(shí)才會(huì)打印嗎?這里就是我所說(shuō)的先運(yùn)算后打印,打印的值是運(yùn)算后的.
do while
那么什么是do while?
do{操作}while(布爾表達(dá)式),這是do while的語(yǔ)法,那么我們什么時(shí)候使用do while?
就是需要程序必須有一個(gè)操作的時(shí)候使用
還不明白?看代碼:
首先先看一段和上面while差不多的do while

你會(huì)發(fā)現(xiàn)和上面的while輸出完全一樣,好像沒(méi)有區(qū)別,那么我再看下面的代碼:

你會(huì)發(fā)現(xiàn)雖然while(num > 10),但是程序依然有輸出一次!
對(duì)的,這就是do while,不論下面的條件表達(dá)式是否成立,都會(huì)執(zhí)行一次do{}里面的操作,通俗一點(diǎn)理解就是:老子不管你讓不讓執(zhí)行,我就是要執(zhí)行一次!
return、break、continue
有循環(huán)就要有跳出,要不然執(zhí)行兩次就可以的豈不是要運(yùn)行到天荒地老!
來(lái),上return代碼!

可以看到雖然num = 10, num > 1,但是只輸出一次就沒(méi)了!
看一下return的定義: 默認(rèn)從最直接包圍它的函數(shù)或者匿名函數(shù)返回
什么意思呢?我們知道定義函數(shù)我們使用fun關(guān)鍵字,那么fun后面的{}就是屬于fun的包裹代碼,也就是作用域,而return就是跳出{},不執(zhí)行{}里的東西了,接著往下執(zhí)行.
我們接著看一個(gè)有趣的小問(wèn)題,有的同學(xué)可能一看跳出,好那就直接在println()下寫(xiě)return

是不是沒(méi)有打印 啦啦啦,跳出了,那是因?yàn)閙ian方法是唯一主線程方法,你直接把主線程調(diào)出來(lái),當(dāng)然什么也打印不出來(lái)!這里提到線程,沒(méi)有編程基礎(chǔ)的同學(xué)可能不理解什么是線程,沒(méi)關(guān)系,循環(huán)漸進(jìn)的去學(xué)習(xí),反正現(xiàn)在給你說(shuō)了,你也是看的云里霧里的.
break
在上一章 kotlin入坑指南三(流程控制語(yǔ)句之if else 和 when)中我提到過(guò)break,那么它是怎么用的呢?
先看一下定義:終止最直接包圍它的循環(huán)
這又是什么意思呢?看代碼:

你是不是突然發(fā)現(xiàn);我的天哪!啦啦啦,跳出了居然打印出來(lái)了,這就是 break的用法,它只是結(jié)束了包圍它的循環(huán),也就是while () {},并沒(méi)有影響下面的println("啦啦啦,跳出了")的執(zhí)行.
continue
先看定義:繼續(xù)下一次最直接包圍它的循環(huán)
還是不明白?看代碼:

使用for循環(huán)實(shí)現(xiàn)的功能,帶你們溫習(xí)一下,好了,講解一下:
for的實(shí)現(xiàn)就不說(shuō)了,如果沒(méi)有if判斷,那么會(huì)123456的輸出,當(dāng)我們使用if介入循環(huán)的邏輯的時(shí)候,mun等于2時(shí),進(jìn)入if語(yǔ)句,這時(shí)候執(zhí)行continue,然后輸出的信息發(fā)現(xiàn)沒(méi)有2這個(gè)值了.由此可以得出,continue是跳出滿(mǎn)足當(dāng)前條件的這次循環(huán),然后進(jìn)行下面的循環(huán).為了防止有些同學(xué)理解有偏差,最后上一塊代碼實(shí)現(xiàn).

println("這里會(huì)不會(huì)執(zhí)行呢?")這句話沒(méi)有被打印,所以當(dāng)前循環(huán)調(diào)用continue時(shí),continue后面的代碼是不會(huì)被執(zhí)行的.