Java初學者:for循環介紹

本章節,咱們介紹java裏的循環,在開始本章節以前,先給你們提出一個問題,好比說,我讓你用print顯示出10條"Hello baby"的信息,你會怎麼作呢? 從咱們之前所學的知識來看,這很簡單,只須要System.out.println("Hello baby");十次便可。可是我讓你顯示出100次甚至更多呢? 也許你說我是無理取鬧,是的,這個問題自己並無實際的意義,可是這樣的問題實際上就是:屢次執行相同或者有必定規律的操做。在這種時候,咱們須要用到循環。只從語義來說,循環就是do it again and again對吧?可是怎麼來作呢?java

    java裏有兩種循環,for循環和while循環,本次,咱們先來介紹for循環。算法

    for循環裏有兩種,普通for循環和for each循環,後者是java後來加上去的,本來是沒有的。先說普通for循環:小程序

    普通for循環的格式是這樣的:數組

    for(初始化條件(通常爲數據的初始化); 判斷條件(通常與前面初始化的數據有關); 條件改變(通常改變那個數據))blog

    {執行的操做}(若是執行的操做只有一條語句,花括號能夠省略掉,可是建議初學者不要這麼作,容易把本身弄糊塗。)數學

    那麼,上面這個for循環是怎麼執行的呢? 咱們來寫個小程序,來講明一下這個問題:it

你看,咱們打印出了10條Hello baby!對吧?可是到底發生了什麼呢?下面咱們詳細解釋一下,for循環

for(int i = 0; i < 10; i ++)循環

{程序

        System.out.println("Hello baby!");

}

i是一個整型數據,在for循環的最最開始,它被定義並初始化爲0,而後判斷它是否小於10,若是小於10,那麼執行

for後面花括號裏的操做,若是不小於10,直接退出循環。咱們的i目前等於0,因此,執行了操做,打印出了一個"Hello baby!",而後呢? 而後程序將跳轉回for後面的圓括號那行,可是,java將從右往左執行,就是說,先執行   i ++,這個是i自加1的意思,因而,咱們的i變成了1,而後判斷,i < 10是否爲真?爲真,由於i如今等於1,既然爲真,那就繼續跳轉進花括號進行操做,因而又打印出一條"Hello baby",而後再跳轉到圓括號那裏,i ++,i變成2,而後再打印出信息,知道i等於9以後,i++,此次變成了10,i < 10此次爲false了,將再也不進入花括號執行操做,而是跳出循環,咱們這個程序,只有一個for循環,跳出此循環,程序就結束了。

    這個例子也許沒什麼實際的意義,那麼咱們這裏來看看有點兒實際意義的。 著名的數學家高斯,在10歲那年,用較短的時間,輕鬆的算出了1+2+3+...+100 = 5050, 使得他的老師彪特奈爾異常激動,意識到本身發現了一個天才。咱們如今知道,當年高斯的算法是第一個數加上最後一個數是101,第二個數加上倒數第二個也是101,一共有50對這樣的加法,最後獲得5050,那麼若是咱們用java的for循環來作呢? 咱們在此用兩種方法,一種是1+2+...+100,另外一種就是模擬高斯的作法,程序代碼以下:

 

你看,結果是相同的是吧,哎,若是當年有java,那輪獲得高斯在那兒裝啊? 就算用笨辦法也比他作的快啊。惋惜啊,當懶惰的Patrick Naughton在1990年12月大聲抱怨C++的時候,距離高斯算出5050這個數字已經213年了。

    以上即是普通的for循環,通常來講,for循環常常控制某些操做的執行次數,因此,多數狀況下,會對整形數據進行初始化和自加操做。但這不是絕對的,for循環能夠很靈活的,好比下面的例子:

 

 

這個例子打印出Thinking in JAVA,可是每次都少打一個字母,這有些像"我頓時凌亂了, 頓時凌亂了,時凌亂了,凌亂了,亂了,了」, 對吧,這個小程序用到了String的基本操做,咱們尚未涉及到。不過這不要緊,我只是說,普通for循環的格式是死板的,可是使用for循環的人是靈活的。

    咱們今天就說到這裏吧,雖然我原本還想說說for each循環,可是那必然會涉及到數組的問題,而咱們尚未說到數組,因此for each循環咱們留到後面再說吧。

相關文章
相關標籤/搜索