Java数组的应用场景
目录
一、保存数据
二、作为函数的参数
2.1. 参数传基本数据类型
2.2. 参数传数组类型(引用数据类型)
三、 作为函数的返回值
一、保存数据
public static void main(String[] args) {int[] array = {1, 2, 3};for(int i = 0; i < array.length; ++i){System.out.println(array[i] + " ");}}
二、作为函数的参数
2.1. 参数传基本数据类型
public static void main(String[] args) {int num = 0;func(num);System.out.println("num = " + num);}public static void func(int x) {x = 10;System.out.println("x = " + x);}// 执行结果
x = 10num = 0
发现在func方法中修改形参 x 的值, 不影响实参的 num 值。
2.2. 参数传数组类型(引用数据类型)
public static void main(String[] args) {int[] arr = {1, 2, 3};func(arr);System.out.println("arr[0] = " + arr[0]);}public static void func(int[] a) {a[0] = 10;System.out.println("a[0] = " + a[0]);}// 执行结果
a[0] = 10arr[0] = 10
发现在func方法内部修改数组的内容, 方法外部的数组内容也发生改变. 因为数组是引用类型,按照引用类型来进行传递,是可以修改其中存放的内容的。
总结:
所谓的 "引用" 本质上只是存了一个地址. Java 将数组设定成引用类型, 这样的话后续进行数组参数传参, 其实 只是将数组的地址传入到函数形参中. 这样可以避免对整个数组的拷贝(数组可能比较长, 那么拷贝开销就会很大)
三、 作为函数的返回值
获取斐波那契数列的前N项
public class TestArray {public static int[] fib(int n){if(n <= 0){return null;}int[] array = new int[n];array[0] = array[1] = 1;for(int i = 2; i < n; ++i){array[i] = array[i-1] + array[i-2];}return array;}public static void main(String[] args) {int[] array = fib(10);for (int i = 0; i < array.length; i++) {System.out.println(array[i]);}}}
完!