1.数组的使用场景
1.1保存数据
public static void main(String[] arsg){
//使用数组保存数据
int array[]={1,2,3};
for(int i=0;i
1.2作为函数的参数
1.参数传基本数据类型
public static void main(String[] args){
int a=0;
fun1(a);
System.out.println(a);
}
public static int fun1(int a){
a=90;
return a;
}
发现在fun方法中修改形参x的值,不影响实参的值
2.参数传数组类型(引用数据类型)
public static void main(String[] args){
int[] arr=new int[]{1,2,3};
System.out.println(arr[0]);
fun(arr);
System.out.println(arr[0]);
}
public static void fun(int[] arr){
arr[0]=88;
return;
}
在fun方法内部修改数组的内容,方法外部的数组内容也发生改变。因为数组是引用类型的变量,按照引用类型来进行传递,是可以修改其中存放的内容的。
引用本质上只是存放了一个地址,传参时,数组传递的是堆上数组的地址。
1.3作为函数的返回值
获取斐波那契数列的前N项
public static void main(String[] args){
int[] array=fib2(2);
for(int j=0;j
2.数组练习
2.1数组转字符串
public static void main(String[] args){
int[] arr=new int[]{1,2,3,5};
String newArr=Arrays.toString(arr);
System.out.println(newArr);
}
使用这个方法让打印数组更加方便
2.2数组拷贝
public static void main(String[] args){
int[] arr=new int[]{1,2,32,222,3321};
int[] newarr=arr;
newarr[0]=10;
System.out.println("newarr"+Arrays.toString(arr));
//newArr和arr引用的是同一个数组
//因此newarr修改空间中的内容之后,arr也可以看见修改的结果
newarr[0]=807;
newarr=Arrays.copyOf(arr,arr.length);
System.out.println("newarr"+Arrays.toString(arr));
//使用Arrays中copyOf方法完成数组的拷贝;
//此时,arr和newarr指向的不是同一块堆的区域,创建了一个新的数组
arr[0]=10;
System.out.println("arr"+Arrays.toString(arr));
System.out.println("newarr"+Arrays.toString(newarr));
//由输出的内容可见,两个引用指向的不是堆中的同一个空间
//拷贝某个范围
int[] array1=Arrays.copyOfRange(arr,1,3);
System.out.println("array1"+Arrays.toString(array1));
//拷贝的区间是左闭右开
}
实现自己版本的拷贝数组
public static void main(String[] args){
int[] array=new int[]{1,2,3,44};
int[] array1=mycopy(array);
System.out.println(Arrays.toString(array1));
}
public static int[] mycopy(int[] array){
int[] array1=new int[array.length];
for(int i=0;i
2.3求数组元素的平均值
给定一个整型数组,求平均值
public static void main(String[] args){
int[] arr={1,2,3,43,544};
System.out.println(fun1(arr));
}
public static double fun1(int[] arr){
int sun=0;
for(int i=0;i
2.4查找数组中的指定元素(顺序查找)
给定一个数组,一个元素,找出该元素在数组中的位置。
public static void main(String[] args){
double[] arr=new double[]{2.22,3.22,121.3,232.212,232.4};
System.out.println(find(arr,2.22));
}
public static int find(double[] arr,double a){
int i=0;
for(i=0;i
3.二维数组
基本语法
数据类型[][] 数组名称=new 数组类型[数组行数][数组列数]{初始化的数据}
public static void main(String[] args){
int[][] arr=new int[][]{{1,2,3},{23,33,211}};
}
二维数组的本质就是一维数组,与一维数组的使用没有太大差别。