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