您现在的位置是:首页
>
函数不能返回数组 Java中数组的返回
Java中数组的返回 假定我们现在想写一个方法 同时不希望它仅仅返回一样东西 而是想返回一系列东西 此时 象C和C++这样的语言会使问题复杂化 因为我们不能返回一个数组 只能返回指向数组的一个指针
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 + ); String[] results = new String[n]; int[] picks = new int[n]; for(int i = ; 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数组。wINgWIt.该数组的大小为n——具体数值取决于我们传递给方法的自变量。随后,它从数组flav里随机挑选一些“香料”(Flavor),并将它们置入results里,并最终返回results。返回数组与返回其他任何对象没什么区别——最终返回的都是一个句柄。至于数组到底是在flavorSet()里创建的,还是在其他什么地方创建的,这个问题并不重要,因为反正返回的仅是一个句柄。一旦我们的操作完成,垃圾收集器会自动关照数组的清除工作。而且只要我们需要数组,它就会乖乖地听候调遣。 另一方面,注意当flavorSet()随机挑选香料的时候,它需要保证以前出现过的一次随机选择不会再次出现。为达到这个目的,它使用了一个无限while循环,不断地作出随机选择,直到发现未在picks数组里出现过的一个元素为止(当然,也可以进行字串比较,检查随机选择是否在results数组里出现过,但字串比较的效率比较低)。若成功,就添加这个元素,并中断循环(break),再查找下一个(i值会递增)。但假若t是一个已在picks里出现过的数组,就用标签式的continue往回跳两级,强制选择一个新t。用一个调试程序可以很清楚地看到这个过程。 main()能显示出20个完整的香料集合,所以我们看到flavorSet()每次都用一个随机顺序选择香料。为体会这一点,最简单的方法就是将输出重导向进入一个文件,然后直接观看这个文件的内容。 lishixinzhi/Article/program/Java/JSP/201311/19484
很赞哦! (1025)
相关文章
- 把一个整数赋值给字符 JAVA中如何把一个类中赋值的变数传递到另一个类中使用
- int没有赋值 java实现:有n个char阵列(List),从每个阵列取出一个char组成一个字串,输出所有的组合
- 空格算不算一个字符 java里的相当于几个空格?
- 用java写一个方法,求1+3+7+.的前n项和,n通过方法引数给定,和值通过方法返回值返回
- 没有返回值的函数怎么调用 js的函式一定要有返回值吗?
- java方法返回值返回给谁 java中字串长度的方法是什么,返回值是什么型别
- 无返回值的函数有什么用 C++中函式型别与定义的函式返回值型别必须相同么?
- 什么是返回值 求大神解答C++:返回值型别、引数个数和引数型别都不相同的函式可以过载 么?
- 函数怎么返回一个数组 DirectInfo.GetFiles返回数组的默认排序
- gui回调函数调用 Java的回调函数
爱学记

微信收款码
支付宝收款码