数组是相同类型数据的有序结合。数组描述的是相同类型的若干类型,按照一定的先后顺序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问他其元素。
数组的三个基本特点:
1.长度确定,一旦被创建,大小不可改变。
2.其元素必须是相同类型,不允许出现混合类型。
3.数组类型可以是任何类型,包括基本类型和引用类型。
数组变量属于引用类型,数组也是对象,数组中的每个元素相当于对象的成员变量。
若声明了一个长度为10的int类型的数组,内存动态如下:
public classTestArray {public static voidmain(String[] args) {//TODO Auto-generated method stub
int[] arr01=new int[10]; //创建一个长度为10(length)的int类型的数组,索引下标0~9
String arr02[]=null; //数组的声明方式
/*逐赋值法*/
arr01[0]=13;
arr01[1]=16;
arr01[2]=18;*/
//arr01[12]=19;//若超越索引下标,编译正确,运行会报错,数组越界ArrayIndexOutOfBoundsException:12
/*循环初始化数组并读取元素值*/
for(int i=0;i
arr01[i]=10+i;
System.out.println(arr01[i]);
}
User2[] arr03=new User2[3];
arr03[0]=new User2(1706,"aa");
arr03[1]=new User2(1707,"ab");
arr03[2]=new User2(1708,"ac");for(int i=0;i
System.out.println(arr03[i].getName());
}
}
}classUser2{private intid;privateString name;/*构造方法*/
public User2(intid, String name) {super();this.id =id;this.name =name;
}/*写get、set方法*/
public intgetId() {returnid;
}public void setId(intid) {this.id =id;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}
}
数组的初始化方式有3种:静态初始化、动态初始化、默认初始化
foreach循环:用于读取数组元素的值,不能修改元素的值
数组的复制、删除及扩容
public classTestArrayCopy {public static voidmain(String[] args) {//TODO Auto-generated method stub
testBasicCopy2();
String s1[]={"aa","bb","cc","dd","ee"};
String s2[]=new String[10];
String str[]={"阿里","腾讯","美团","百度","BAT","去哪儿"};
removeElement(str,2);
extendRange(s1);
System.arraycopy(s1,2, s2, 6, 3);//将s1数组从第2个位置开始拷到s2的第6个位置
/*Object src, int srcPos, Object dest, int destPos, int length)
从SRC数组拷贝到dest数组;srcPos数组开始拷贝的位置.destPos目标数组位置;length代表长度*/
for(int i=0;i
System.out.println(i+":"+s2[i]);
}
}//测试从数组中删除某个元素cc(本质上还是数组的拷贝)
public static voidtestBasicCopy2(){
String s1[]={"aa","bb","cc","dd","ee"};//String s2[]=new String[5];
System.arraycopy(s1,3, s1, 3-1, 2);
s1[s1.length-1]=null;for(int i=0;i
System.out.println(i+":"+s1[i]);
}
}//删除数组中指定索引位置的元素,并将原数组返回
public static String[] removeElement(String s[],intindex){
System.arraycopy(s, index+1, s, index, s.length-index-1);
s[s.length-1]=null;for(int i=0;i
System.out.println(i+":"+s[i]);
}returns;
}//数组的扩容(本质上是先定义一个更大的数组,然后将原数组内容原封不动地拷贝到新数组)
public staticString[] extendRange(String[] s1){
String ss2[]=new String[s1.length+3];
System.arraycopy(s1,0, ss2, 0, s1.length);for(String j:ss2){
System.out.println(j);
}returnss2;
}
}
数组复制的参数解释:
Array类:JDK提供的java.util.Arrays类,包含了常用的数组操作,方便我们日常开发。包含了:排序、查找、填充、打印等操作。
打印:
排序:
查找:
多维数组:可以看成以数组为元素的数组,经常使用二维数组,学习容器后,一般使用容器,二维数组用的很少。