麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Java中數組的返回

2019-11-18 13:21:59
字體:
來源:轉載
供稿:網友

  假定我們現在想寫一個方法,同時不希望它僅僅返回一樣東西,而是想返回一系列東西。此時,象C和C++這樣的語言會使問題復雜化,因為我們不能返回一個數組,只能返回指向數組的一個指針。這樣就非常麻煩,因為很難控制數組的“存在時間”,它很輕易造成內存“漏洞”的出現。
  java采用的是類似的方法,但我們能“返回一個數組”。當然,此時返回的實際仍是指向數組的指針。但在Java里,我們永遠不必擔心那個數組的是否可用——只要需要,它就會自動存在。而且垃圾收集器會在我們完成后自動將其清除。
  
  作為一個例子,請思考如何返回一個字串數組:
  
  //: IceCream.java
  // Returning arrays from methods
  
  public class IceCream {
   static String[] flav = {
    "Chocolate", "Strawberry",
    "Vanilla Fudge Swirl", "Mint Ch    "Mocha Almond Fudge", "Rum Raisin",
    "
PRaline Cream", "Mud Pie"
   };
   static String[] flavorSet(int n) {
    // Force it to be positive & within bounds:
    n = Math.abs(n) % (flav.length + 1);
    String[] results = new String[n];
    int[] picks = new int[n];
    for(int i = 0; i < picks.length; i++)
     picks[i] = -1;
    for(int i = 0; i < picks.length; i++) {
     retry:
     while(true) {
      int t =
       (int)(Math.random() * flav.length);
      for(int j = 0; j < i; j++)
       if(picks[j] == t) continue retry;
      picks[i] = t;
      results[i] = flav[t];
      break;
     }
    }
    return results;
   }
   public static void main(String[] args) {
    for(int i = 0; i < 20; i++) {
     System.out.println(
      "flavorSet(" + i + ") = ");
     String[] fl = flavorSet(flav.length);
     for(int j = 0; j < fl.length; j++)
      System.out.println("/t" + fl[j]);
    }
   }
  } ///:~
  
  flavorSet()方法創建了一個名為results的String數組。該數組的大小為n——具體數值取決于我們傳遞給方法的自變量。隨后,它從數組flav里隨機挑選一些“香料”(Flavor),并將它們置入results里,并最終返回results。返回數組與返回其他任何對象沒什么區別——最終返回的都是一個句柄。至于數組到底是在flavorSet()里創建的,還是在其他什么地方創建的,這個問題并不重要,因為反正返回的僅是一個句柄。一旦我們的操作完成,垃圾收集器會自動關照數組的清除工作。而且只要我們需要數組,它就會乖乖地聽候調遣。
  另一方面,注重當flavorSet()隨機挑選香料的時候,它需要保證以前出現過的一次隨機選擇不會再次出現。為達到這個目的,它使用了一個無限while循環,不斷地作出隨機選擇,直到發現未在picks數組里出現過的一個元素為止(當然,也可以進行字串比較,檢查隨機選擇是否在results數組里出現過,但字串比較的效率比較低)。若成功,就添加這個元素,并中斷循環(break),再查找下一個(i值會遞增)。但假若t是一個已在picks里出現過的數組,就用標簽式的continue往回跳兩級,強制選擇一個新t。用一個調試程序可以很清楚地看到這個過程。
  main()能顯示出20個完整的香料集合,所以我們看到flavorSet()每次都用一個隨機順序選擇香料。為體會這一點,最簡單的方法就是將輸出重導向進入一個文件,然后直接觀看這個文件的內容。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 99国产精品白浆在线观看免费 | 久久精品亚洲一区二区三区观看模式 | 日韩欧美精品电影 | 国产精品久久久久久影院8一贰佰 | 国产免费观看电影网站 | 国产免费黄色 | 成人啪啪色婷婷久 | 黄色网址在线免费播放 | 免费一级a毛片在线播放视 日日草夜夜操 | 日本精品免费观看 | 国产一级毛片高清视频完整版 | 一级电影免费在线观看 | 一级黄色在线免费观看 | 日韩做爰视频免费 | 一级毛片在线视频 | 九九热在线视频观看 | 亚洲成人在线视频网站 | 免费的性生活视频 | 色网站免费观看 | 久久免费观看一级毛片 | 久久久青 | 欧美日韩大片在线观看 | 久久久99精品视频 | 少妇淫片免费一级毛片 | 欧美人与禽性xxxxx杂性 | 亚洲午夜在线 | 国产中出在线观看 | 亚洲视频在线免费看 | 久久精品视频免费观看 | 日韩电影av在线 | 免费看黄色一级大片 | 午夜精品在线视频 | 一本免费视频 | 久久久久亚洲a | 国产在线中文 | 亚洲精品一区二区三区大胸 | 成人福利软件 | 一区二区三区日韩在线 | 国产超碰人人做人人爱ⅴa 国产精品久久久久久久hd | 成年性羞羞视频免费观看无限 | 免费一级a毛片免费观看 |