当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

java数组的返回[Java编程]

赞助商链接



  本文“java数组的返回[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
假定我们目前想写一个办法,同时不但愿它仅仅返回一样东西,而是想返回一系列东西.此时,象C和C++这样的语言会使问题复杂化,因为我们不能返回一个数组,只能返回指向数组的一个指针.这样就非常麻烦,因为很难掌握数组的“存在时间”,它很简单造成内存“漏洞”的呈现.
Java采取的是近似的办法,但我们能“返回一个数组”.当然,此时返回的实际还是指向数组的指针.但在Java里,我们永久没必要耽忧那个数组的能否可用——只要需求,它就会自动存在.并且垃圾汇集器会在我们完成后自动将其排除.
作为一个例子,请考虑若何返回一个字串数组:
//: IceCream.java
// Returning arrays from methods

public class IceCream {
  static String[] flav = {
    "Chocolate", "Strawberry",
    "Vanilla Fudge Swirl", "Mint Chip",
    "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()每次都用一个随机次序挑选香料.为领会这一点,最简单的办法就是将输出重导向进入一个文件,然后直接傍观这个文件的内容.
  以上是“java数组的返回[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .