对数组的疑问,也一直困扰我。
1.数据类型数组
定义与初始化
int[] a1;
a1=new int[3];
int[] a2=new int[3];
int[] a3={1,1};
int[] a4={};
System.out.println(a4[0]);//报错
a1.length=3
a2.length=3
a3.length=2
2.类数组
Car[] cars1;
cars1=new Car[2];
cars1[0]=new Car(0);
cars1[1]=new Car(1);
Car[] cars2={new Car(1),new Car(2)};
class Car{
int num;
public Car(int num){
this.num=num;
}
}
3.多维数组
int[][] a5=new int[2][3];//int a5[][]=new int[3][2];
int[] a51={1,2,3};
int[] a52={4,5,6};
a5[0]=a51;
a5[1]=a52;
int[][] a6={{1,2,3},{4,5,6}};
a5.length=2
a6.length=2
4.数组做函数参数
class Num{
public Num(){
int[] a={0,1};
int b=0;
String s="haha";
display(a,b,s);
add(a,b,s);
display(a,b,s);
int[] aa=add(a);
display(aa,b,s);
display(a,b,s);
}
public void display(int[] a,int b,String s){
System.out.println("数组内容:"+b+" "+s);
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
System.out.println();
}
public void add(int[] a,int b,String s){
s="xixix";
b++;
for(int i=0;i<a.length;i++){
a[i]=a[i]+1;
}
}
public int[] add(int[] a){
for(int i=0;i<a.length;i++){
a[i]=a[i]+2;
}
return a;
}
}
运行结果:
list和数组的传递是地址引用传递,所以在子函数中数组改变,父函数中数组也改变。而int,string是数值引用传递,子函数中改变,父函数中的值不会改变。