日期:2011-03-22 16:17:00 来源:本站整理
java数组的返回[Java编程]
本文“java数组的返回[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
假定我们目前想写一个办法,同时不但愿它仅仅返回一样东西,而是想返回一系列东西.此时,象C和C++这样的语言会使问题复杂化,因为我们不能返回一个数组,只能返回指向数组的一个指针.这样就非常麻烦,因为很难掌握数组的“存在时间”,它很简单造成内存“漏洞”的呈现.
Java采取的是近似的办法,但我们能“返回一个数组”.当然,此时返回的实际还是指向数组的指针.但在Java里,我们永久没必要耽忧那个数组的能否可用——只要需求,它就会自动存在.并且垃圾汇集器会在我们完成后自动将其排除.
作为一个例子,请考虑若何返回一个字串数组:
flavorSet()办法成立了一个名为results的String数组.该数组的大小为n——具体数值取决于我们传送给办法的自变量.随后,它从数组flav里随机挑选一些“香料”(Flavor),并将它们置入results里,并终究返回results.返回数组与返回其他任何对象没什么辨别——终究返回的都是一个句柄.至于数组毕竟是在flavorSet()里成立的,还是在其他什么地方成立的,这个问题并不重要,因为反正返回的仅是一个句柄.一旦我们的操作完成,垃圾汇集器会自动关照数组的排除工作.并且只要我们需求数组,它就会乖乖地听候调遣.//: 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()随机挑选香料的时刻,它需求保证从前呈现过的一次随机挑选不会再次呈现.为到达这个目的,它利用了一个无限while循环,不断地作出随机挑选,直到发现未在picks数组里呈现过的一个元素为止(当然,也可以举行字串对比,查抄随机挑选能否在results数组里呈现过,但字串对比的效率对比低).若成功,就增添这个元素,并中止循环(break),再查找下一个(i值会递增).但假如t是一个已在picks里呈现过的数组,就用标签式的continue往回跳两级,强迫挑选一个新t.用一个调试程序可以很清楚地看到这个历程.
main()能显示出20个完好的香料调集,所以我们看到flavorSet()每次都用一个随机次序挑选香料.为领会这一点,最简单的办法就是将输出重导向进入一个文件,然后直接傍观这个文件的内容.
以上是“java数组的返回[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:调集
- ·下一篇文章:数组和第一类对象
- ·中查找“java数组的返回”更多相关内容
- ·中查找“java数组的返回”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论