数组:
数组是一个变量,它存储的是具有相同数据类型的一组数据
声明一个变量是在内存空间划出“一块”合适的空间
声明一个数组是在内存空间划出“一串连续”的空间
数组的基本要素:
1.标识符:即数组的名称,用于区分不同的数组
2.数组长度的属性:length
3.元素下标:对数组元素进行编号,从‘0’开始,数组中的每一个元素都可以通过下标来访问
先数组声明:
1.数据类型 数组名[]; 例如:int score[];
2.数据类型[] 数组名(建议使用这种方式); 例如:int[] score;
再分配空间:
数组名=new 数据类型[大小] 例如:score=new int[30];
声明数组并分配空间:
数据类型[] 数组名=new 数据类型[大小]; 例如: int[] score=new score[30];
一维数组的静态初始化:即在声明数组时直接指定数组的具体内容
数据类型[] 数组名={初值0,初值1,初值2,...,初值n};
例如:int[] score={32,51,45,67,89,90};
一维数组在内存中的存储方式:数组名存放在栈内存中,为数组分配的空间在堆内存中
遍历数组的方式:
1.通过for循环获取数组元素的下标,然后遍历对应元素
例如:for(int i=0; i<score.length; i++){ //逐个遍历数字中的元素score[i] }
2.foreach输出:
格式为:for(数据类型 变量名称:数组名称){...}
例如:for(int x:score){//X为当前正在遍历的数组元素 }
可变参数:
public class ChangeableParam {
public static void main(String[] args) {
show();
show(1,3,5,7,9);
show(2,4,6,8,0,12);
}
public static void show(int... a){
System.out.println("当前传递的参数个数是:"+a.length);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
}
数组拷贝
System类中有一个静态方法
public static native void arraycopy(Object src,int srcPos,Object dest,int destPos,int length);
参数解释:
src:源数组
srcPos:源数组的起始位置
dest:目标数组
destPos:目标数组的起始位置
length:拷贝的数组元素的个数
public class ArrayCopy {
public static void main(String[] args) {
int[] a={1,2,3,4,5,6,7,8,9};
int[] b={11,22,33,44,55,66,77,88,99};
System.arraycopy(a,1,b,4,3);
System.out.println("复制后的数组:");
for (int i = 0; i < b.length; i++) {
System.out.print(b[i]+" ");
}
}
}
二维数组:
二维数组的声明与实例化:
数据类型[][] 数组名称=new 数据类型[行的个数][列的个数];
注意:二维数组的length属性就是它所包含的"行的个数"
二维数组访问具体元素的语法:数组名称[行的索引][列的索引];
二维数组的静态初始化:
数据类型[][] 数组名称={{元素1,元素2,...},{元素1,元素2}}