Java中数组的定义和使用教程(二)
数组与方法调用
数组是一个引用数据类型,那么所有的引用数据类型都可以为其设置多个栈内存指向。所以在进行数组操作的时候,也可以将其通过方法进行处理。
范例: 方法接受数组
public class arraydemo { public static void main(string args[]) { int data[] = new int[] {1, 2, 3}; printarray(data); } //定义一个专门进行数组输出的方法 public static void printarray(int temp[]) { for (int i = 0; i < temp.length; i++) { system.out.print(temp[i] + "、"); } } }
在方法的参数上由于需要接受一个整型数组,所以就实现了一个最为基础的引用传递操作。
范例: 方法返回数组
public class arraydemo { public static void main(string args[]) { int data[] = init(); //接受数组 printarray(data); } //此时的方法希望可以返回一个数组类型,所以返回值类型定义为整形数组 public static int[] init() { return new int[] {1, 2, 3, 4, 6}; } //定义一个专门进行数组输出的方法 public static void printarray(int temp[]) { for (int i = 0; i < temp.length; i++) { system.out.print(temp[i] + "、"); } } }
那么现在的数组上发生了引用传递,那么也就意味着方法接受数组之后也可以对数组进行内容修改。
范例: 定义一个方法,该方法可以实现数组的内容的乘2
public class arraydemo { public static void main(string args[]) { int data[] = init(); inc(data); printarray(data); } public static void inc(int arr[]) { for(int x = 0; x < arr.length; x++) arr[x] *= 2; } //此时的方法希望可以返回一个数组类型,所以返回值类型定义为整形数组 public static int[] init() { return new int[] {1, 2, 3, 4, 6}; } //定义一个专门进行数组输出的方法 public static void printarray(int temp[]) { for (int i = 0; i < temp.length; i++) { system.out.print(temp[i] + "、"); } } }
java对数组的支持
在java本身给出的类库之中也提供有对于数组的操作的相关支持方法。
1、数组排序:java.util.arrays.sort(数组名称);
范例: 实现数组排序操作
public class arraydemo { public static void main(string args[]) { int data[] = new int[] {5, 13, 1, 55, 77}; char arr[] = new char[] {'d', 'c', 'f'}; java.util.arrays.sort(data); java.util.arrays.sort(arr); printarray(data); printarray(arr); } //定义一个专门进行数组输出的方法 public static void printarray(int temp[]) { for (int i = 0; i < temp.length; i++) { system.out.print(temp[i] + "、"); } system.out.println(); } public static void printarray(char temp[]) { for (int i = 0; i < temp.length; i++) { system.out.print(temp[i] + "、"); } system.out.println(); } }
只要是基本数据类型的数组,arrays.sort()都可以轻松地实现排序处理。
2、数组拷贝:指的是将一个数组的部分内容替换掉另外一个数组的内容
方法(加工):system.arraycopy(原数组名称, 原数组开始点, 目标数组名称, 目标数组开始点, 拷贝长度)
范例: 实现数组拷贝
原数组a:1、2、3、4、5、6、7、8、9;
原数组b:11、22、33、44、55、66、77、88、99;
替换后的数组a:1、55、66、77、5、6、7、8、9;
public class arraydemo { public static void main(string args[]) { int dataa[] = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9}; int datab[] = new int[] {11, 22, 33, 44, 55, 66, 77, 88, 99}; system.arraycopy(datab, 4, dataa, 1, 3); printarray(dataa); } //定义一个专门进行数组输出的方法 public static void printarray(int temp[]) { for (int i = 0; i < temp.length; i++) { system.out.print(temp[i] + "、"); } system.out.println(); } }
这些基本的数组操作只能够作为逻辑玩玩,开发用不上。
数组数据统计
现在假设给你一个数组,要求可以统计该数组的最大值、最小值、平均值、总和。这种操作肯定是要通过循环的操作形式完成。
范例: 基本实现
public class arraydemo { public static void main(string args[]) { int data[] = new int[] {1, 2, 3, 4, 66, 5, 6, 7, 8, 9}; int max = data[0]; int min = data[0]; int sum = 0; for(int x = 0; x < data.length; x++) { sum += data[x]; if(data[x] > max) max = data[x]; if(data[x] < min) min = data[x]; } system.out.println("最大值:" + max); system.out.println("最小值:" + min); system.out.println("数据总和:" + sum); system.out.println("平均值:" + (double)sum/data.length); } }
此时确实实现了所需要的功能,但是随之会发现主方法中的代码有些多。主方法实际上就相当于一个客户端调用,那么既然是客户端调用,里面的代码应该也越简单越好。
范例: 改进代码
public class arraydemo { public static void main(string args[]) { int data[] = new int[] {1, 2, 3, 4, 66, 5, 6, 7, 8, 9}; double result[] = stat(data); system.out.println("最大值:" + result[0]); system.out.println("最小值:" + result[1]); system.out.println("数据总和:" + result[2]); system.out.println("平均值:" + result[3]); } //此时需要返回的数据一共有四个,那么一个方法只能够返回一种数据类型,所以应该使用数组返回 //数组[0]为最大值、数组[1]为最小值、数组[2]为数据总和、数组[3]为平均值 public static double[] stat(int data[]) { double redata[] = new double[4]; redata[0] = data[0]; redata[1] = data[0]; redata[2] = data[0]; for(int x = 1; x < data.length; x++) { redata[2] += data[x]; if(data[x] > redata[0]) redata[0] = data[x]; if(data[x] < redata[1]) redata[1] = data[x]; } redata[3] = redata[2] / data.length; return redata; } }
在整个进行程序开发的时候,主方法不要涉及到过于复杂的逻辑程序,只需要关注结果。
总结
到此这篇关于java中数组的定义和使用的文章就介绍到这了,更多相关java数组的定义和使用内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
Java中的字节流文件读取教程(二)
-
java基本教程之Thread中start()和run()的区别 java多线程教程
-
Spring in action 读书笔记(第二章)bean的装配(java类显式配置和spring-test单元测试的使用)
-
php定义数组和使用示例(php数组的定义方法)_php实例
-
Java中字符数组和字符串与StringBuilder和字符串转换的讲解
-
Java8中stream和functional interface的配合使用详解
-
PHP和JAVA中的重载(overload)和覆盖(override) 介绍_PHP教程
-
Java泛型-泛型作用+泛型在各种数据结构中的使用+自定义泛型
-
使用PHP中的日期和时间函数_PHP教程
-
PHP 如何获取二维数组中某个key的集合_PHP教程