数组特点
- 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
- 其元素必须是相同类型,不允许出现混合类型。
- 数组类型可以是任何数据类型,包括基本类型和引用类型。
数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中存储的。
数组声明
type[] a;/建议使用这种
type a[];
数组初始化
int[] a={1,2,3};/静态初始化
int[] a=new int[2];
a[0]=1;
a[1]=2;/动态初始化
默认初始化
int[] a=new int[2];/默认{0,0}
boolean[] b=new boolean[2];/{false,false}
String[] s=new String[2];/{null,null}
数组的长度
数组名.length,下标的合法区间[0,数组名.length-1]。
数组拷贝
static void arraycopy(object src,int srcpos,object dest, int destpos,int length)
数组扩容
int[] a={1,2,3};
int[] b=new int[a.length*2];
System.arraycopy(a,0,b,0,a.length);//第一种
int[] c=java.util.Arrays.copyOf(a,a.length*2);
数组增删
public class TestArrayCopy {
int i;
public static void main(String[] args) {
String[] s3= {"天","地","玄","黄"};
removeElment(s3,1);
extendRange(s3);
testBasicCopy();
}
public static void testBasicCopy() {
String[] s1= {"aa","bb","cc","dd","ee"};
String[] s2=new String[5];
System.arraycopy(s1, 2, s2, 1,s1.length);
for(int i=0;i<s1.length;i++) {
System.out.println(i+"--"+s2[i]);
}
}
//删除元素,输入删除数据的位置
public static String[] removeElment(String[] s,int index) {
int i;
System.arraycopy(s, index+1, s, index, s.length-index-1);
for(i=0;i<s.length;i++) {
System.out.println(i+"--"+s[i]);
}
return s;
}
//扩容数组
public static String[] extendRange(String[] str) {
String[] str2=new String[str.length+10];
System.arraycopy(str, 0, str2, 0, str.length);
for(String temp:str2) {
System.out.println(temp);
}
return str2;
}
}
java.util.Arrays工具
System.out.println(Arrays.toString(a)); //输出数组元素
Arrays.sort(a);//数组排序
System.out.println("该元素的索引:"+Arrays.binarySearch(a, 12)); //二分法查找
Arrays.fill(a, 2, 4, 100); //数组填充,将2到4索引的元素替换为100;
冒泡
public static void maopao(int[] a){
int temp;
for(int i=0;i<a.length;i++){
for(int j=0;j<a.length-1-i;j++){
if(a[j]<a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
二维数组声明
type[][]arr_name=new type[length][];
type arr_name[][]=new type[length][length];