数组的定义(初始化)
int a [] = new int[]{};//定义数组
// int a [] = new int[3];//定义一个长度为3的数组
int [] b = new int[]{};//定义数组 不建议使用
int c [] = new int[]{1,2,3};//初始化赋值
// int c [] = {3,2,1};//初始化赋值
打印数组的几种方式
System.out.println(c);//这么做只能输出数组的首地址
System.out.println(c[0]);//输出数组c的第一个元素
System.out.println(c.length);//输出数组c的长度
/**
* 通过for循环遍历输出数组中的所有元素
*/
for(int i = 0;i < c.length;i++){
System.out.println(c[i]);
}
/**
* 通过for each循环遍历输出数组中的所有元素
*/
for (int i : c) {
System.out.println(i);
}
/**
* 使用Arrays类中的toString()方法输出数组元素 元素被放置在[]内,通过逗号分隔
*/
System.out.println(Arrays.toString(c));
给数组进行赋值
d[0] = 3;//将数组d的第一个元素改为3
System.out.println(d[0]);
System.out.println(c[0]);//发现数组c的元素也随之改变
数组的本质是一个由JVM创建的对象 以上操作其实是对同一个对象进行操作
通过Object类定义的clone()方法创建一个新的对象副本
int e [] ={1,2,3};
int f [] =(int[]) e.clone();//进行类型强制转换
System.out.println(e[1]);
System.out.println(f[1]);
f[1] = 3;
System.out.println(f[1]);
System.out.println(e[1]);//此时可以发现数组e的值没有随之改变
使用System的静态方法arraycopy()
int g [] = new int[]{4,5,6};
int h [] = new int[3];
System.arraycopy(g,0,h,0,3);//通过数组g给数组h赋值
for (int i : h) {
System.out.println(i);
}
System.arraycopy(g,1,g,2,1);//通过数组g改变其本身的值
for (int i : g) {
System.out.println(i);
}
arraycopy(Object src, int srcPos, Object dest, int destPos, int length); 该方法释义(jdk11):从指定的源数组的指定位置开始,将数组复制到目标数组的指定位置。数组组件子序列从src引用的源数组复制到dest引用的目标数组,复制的组件数量等于length参数。 源数组中srcPos到srcPos+length-1位置的分量分别复制到目标数组的destPos到destPos+length-1位置。 如果src和dest参数指向同一个数组对象,则复制的过程就像先将srcPos到srcPos+length-1位置上的组件复制到具有length组件的临时数组中, 然后通过目标数组的destPos+length-1将临时数组的内容复制到destPos位置上一样。