<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 返回數組 假設你寫了一個方法,這個方法不是返回一個元素,而是返回多個元素。對 C++/C 這樣的語言來說這是很困難的,因為你無法返回一個數組,只能是返回一個指向數組的指針。這會帶來一些問題,因為對數組生存期的控制變得很混亂,這會導致內存泄露。 而在 Java 中,你只需返回數組,你永遠不用為數組擔心,只要你需要它,它就可用,垃圾收集器會在你用完后把它清理干凈。 下面,我們返回一個 **字符串** 數組: ```Java // arrays/IceCreamFlavors.java // Returning arrays from methods import java.util.*; import static onjava.ArrayShow.*; public class IceCreamFlavors { private static SplittableRandom rand = new SplittableRandom(47); static final String[] FLAVORS = { "Chocolate", "Strawberry", "Vanilla Fudge Swirl", "Mint Chip", "Mocha Almond Fudge", "Rum Raisin", "Praline Cream", "Mud Pie" }; public static String[] flavorSet(int n) { if(n > FLAVORS.length) throw new IllegalArgumentException("Set too big"); String[] results = new String[n]; boolean[] picked = new boolean[FLAVORS.length]; for(int i = 0; i < n; i++) { int t; do t = rand.nextInt(FLAVORS.length); while(picked[t]); results[i] = FLAVORS[t]; picked[t] = true; } return results; } public static void main(String[] args) { for(int i = 0; i < 7; i++) show(flavorSet(3)); } } /* Output: [Praline Cream, Mint Chip, Vanilla Fudge Swirl] [Strawberry, Vanilla Fudge Swirl, Mud Pie] [Chocolate, Strawberry, Vanilla Fudge Swirl] [Rum Raisin, Praline Cream, Chocolate] [Mint Chip, Rum Raisin, Mocha Almond Fudge] [Mocha Almond Fudge, Mud Pie, Vanilla Fudge Swirl] [Mocha Almond Fudge, Mud Pie, Mint Chip] */ ``` **flavorset()** 創建名為 **results** 的 **String** 類型的數組。 這個數組的大小 **n** 取決于你傳進方法的參數。然后從數組 **FLAVORS** 中隨機選擇 flavors 并且把它們放進 **results** 里并返回。返回一個數組就像返回其他任何對象一樣,實際上返回的是引用。數組是在 **flavorSet()** 中或者是在其他什么地方創建的并不重要。垃圾收集器會清理你用完的數組,你需要的數組則會保留。 如果你必須要返回一系列不同類型的元素,你可以使用 [泛型](book/20-Generics.md) 中介紹的 **元組** 。 注意,當 **flavorSet()** 隨機選擇 flavors,它應該確保某個特定的選項沒被選中。這在一個 **do** 循環中執行,它將一直做出隨機選擇直到它發現一個元素不在 **picked** 數組中。(一個字符串 比較將顯示出隨機選中的元素是不是已經存在于 **results** 數組中)。如果成功了,它將添加條目并且尋找下一個( **i** 遞增)。輸出結果顯示 **flavorSet()** 每一次都是按照隨機順序選擇 flavors。 一直到現在,隨機數都是通過 **java.util.Random** 類生成的,這個類從 Java 1.0 就有,甚至更新過以提供 Java 8 流。現在我們可以介紹 Java 8 中的 **SplittableRandom** ,它不僅能在并行操作使用(你最終會學到),而且提供了一個高質量的隨機數。這本書的剩余部分都使用 **SplittableRandom** 。
                  <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>

                              哎呀哎呀视频在线观看