<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## [for-in 語法](https://lingcoder.gitee.io/onjava8/#/book/05-Control-Flow?id=for-in-%e8%af%ad%e6%b3%95) Java 5 引入了更為簡潔的“增強版**for**循環”語法來操縱數組和集合。(更多細節,可參考[數組](https://lingcoder.gitee.io/onjava8/#/./21-Arrays)和[集合](https://lingcoder.gitee.io/onjava8/#/./12-Collections)章節內容)。大部分文檔也稱其為**for-each**語法,但因為了不與 Java 8 新添的`forEach()`產生混淆,因此我稱之為**for-in**循環。 (Python 已有類似的先例,如:**for x in sequence**)。**注意**:你可能會在其他地方看到不同叫法。 **for-in**無需你去創建**int**變量和步進來控制循環計數。 下面我們來遍歷獲取**float**數組中的元素。代碼示例: ~~~ // control/ForInFloat.java import java.util.*; public class ForInFloat { public static void main(String[] args) { Random rand = new Random(47); float[] f = new float[10]; for(int i = 0; i < 10; i++) f[i] = rand.nextFloat(); for(float x : f) System.out.println(x); } } ~~~ 輸出結果: ~~~ 0.72711575 0.39982635 0.5309454 0.0534122 0.16020656 0.57799757 0.18847865 0.4170137 0.51660204 0.73734957 ~~~ 上例中我們展示了傳統**for**循環的用法。接下來再來看下**for-in**的用法。代碼示例: ~~~ for(float x : f) { ~~~ 這條語句定義了一個**float**類型的變量`x`,繼而將每一個`f`的元素賦值給它。 任何一個返回數組的方法都可以使用**for-in**循環語法來遍歷元素。例如**String**類有一個方法`toCharArray()`,返回值類型為**char**數組,我們可以很容易地在**for-in**循環中遍歷它。代碼示例: ~~~ // control/ForInString.java public class ForInString { public static void main(String[] args) { for(char c: "An African Swallow".toCharArray()) System.out.print(c + " "); } } ~~~ 輸出結果: ~~~ A n A f r i c a n S w a l l o w ~~~ 很快我們能在[集合](https://lingcoder.gitee.io/onjava8/#/./12-Collections)章節里學習到,**for-in**循環適用于任何可迭代(*iterable*)的 對象。 通常,**for**循環語句都會在一個整型數值序列中步進。代碼示例: ~~~ for(int i = 0; i < 100; i++) ~~~ 正因如此,除非先創建一個**int**數組,否則我們無法使用**for-in**循環來操作。為簡化測試過程,我已在`onjava`包中封裝了**Range**類,利用其`range()`方法可自動生成恰當的數組。 在[封裝](https://lingcoder.gitee.io/onjava8/#/./07-Implementation-Hiding)(Implementation Hiding)這一章里我們介紹了靜態導入(static import),無需了解細節就可以直接使用。 有關靜態導入的語法,可以在**import**語句中看到: ~~~ // control/ForInInt.java import static onjava.Range.*; public class ForInInt { public static void main(String[] args) { for(int i : range(10)) // 0..9 System.out.print(i + " "); System.out.println(); for(int i : range(5, 10)) // 5..9 System.out.print(i + " "); System.out.println(); for(int i : range(5, 20, 3)) // 5..20 step 3 System.out.print(i + " "); System.out.println(); for(int i : range(20, 5, -3)) // Count down System.out.print(i + " "); System.out.println(); } } ~~~ 輸出結果: ~~~ 0 1 2 3 4 5 6 7 8 9 5 6 7 8 9 5 8 11 14 17 20 17 14 11 8 ~~~ `range()`方法已被[重載](https://lingcoder.gitee.io/onjava8/#/./06-Housekeeping?id=%e6%96%b9%e6%b3%95%e9%87%8d%e8%bd%bd)(重載:同名方法,參數列表或類型不同)。上例中`range()`方法有多種重載形式:第一種產生從 0 至范圍上限(不包含)的值;第二種產生參數一至參數二(不包含)范圍內的整數值;第三種形式有一個步進值,因此它每次的增量為該值;第四種`range()`表明還可以遞減。`range()`無參方法是該生成器最簡單的版本。有關內容會在本書稍后介紹。 `range()`的使用提高了代碼可讀性,讓**for-in**循環在本書中適應更多的代碼示例場景。 請注意,`System.out.print()`不會輸出換行符,所以我們可以分段輸出同一行。 *for-in*語法可以節省我們編寫代碼的時間。 更重要的是,它提高了代碼可讀性以及更好地描述代碼意圖(獲取數組的每個元素)而不是詳細說明這操作細節(創建索引,并用它來選擇數組元素) 本書推薦使用*for-in*語法。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看