java中对数组的操作有遍历和拷贝两种,遍历指的是通过循环操作遍历数组的所有元素,简单理解就是通过循环操作访问数组中的所有元素,因此这里就要用到循环结构了。一般情况下,采用循环结构来遍历一维数组,采用循环的嵌套结构来访问来遍历多维数组。数组的拷贝操作指的将某个数组的内容拷贝到另一个数组中去,包括将整个数组拷贝到另一个数组中去,或者将某一个数组的一小段拷贝到另一个数组中去。
数组的遍历
在数组中,数组的的下标是从0开始计数的,因此可以用下标区间[0,区间长度-1]来表示数组的长度。在对数组进行遍历时,通过数组的下标来访问数组中的元素,同时可以对数组中的元素进行读取或者修改的操作。比如通过for循环遍历数组时就可以将数组中的元素打印出来,或者对一个未赋值的数组进行遍历时,可以将数组中的每一个值进行赋值操作。具体操作可参考后面给出的程序代码。
在java中,在使用for循环遍历数组的基础上,为了方便,JDK1.5之后又增加了一个增强for循环的功能。增强for循环for-each的语法结构为:for(数据类型 数据变量名称:要遍历的数组名称){ 要进行的操作}。在这个语法结构中,数据类型要根据要遍历的数组中的数组的元素进行确定,比如如果数组的元素是整形,那么在for-each循环中的数据类型就是int类型,如果是引用类型,那么数据类型就是String类型。此外还要强调一点,如果数据类型是数组,要遍历的数据是数组的情况,那么数据类型处应该填写的是要遍历的数组中元素类型加上数组符号。比如数组的元素为int类型,那么在数据类型处应该填写int [ ]。对于数据名称,一般由自己定义一个变量,这个变量是用来接收数组中的元素的。进行增强for循环操作时,会把要遍历的数组中的元素都取出来,放到定义的数据变量名称中,接下来在花括号的操纵中一般是对这个用来接收数组元素的变量进行操作。比如以下程序中最后进行的for-each循环:
package cn.luoyusanshu.array;
import java.util.Arrays;
/**
* 创建一个数组演示类,用来演示数组的遍历与增强for循环
*/
public class ArrayDemo01 {
int[] arr01 = new int[5];
int[] arr02 = {2,3,8,9,11,15};
int[][] arr03 = new int[3][2];
public static void main(String[] args) {
ArrayDemo01 array = new ArrayDemo01();
//用for循环对arr01数组进行遍历并赋值打印
for (int i = 0; i < array.arr01.length ; i++) {
array.arr01[i]=i*2+1;
}
System.out.println(Arrays.toString(array.arr01));
//用for循环对arr02数组进行遍历并打印
System.out.println("_________________________");
for (int i = 0; i < array.arr02.length; i++) {
System.out.print(array.arr02[i]+"\t");
}
System.out.println("_____________________________");
//用嵌套循环遍历二维数组arr03并进行赋值操作,并将结果打印出来
for (int i = 0; i < array.arr03.length; i++) {
for (int j = 0; j < array.arr03[i].length; j++) {
array.arr03[i][j] = i +j;
}
}
for (int i = 0; i <array.arr03.length ; i++) {
System.out.println(Arrays.toString(array.arr03[i]));
}
//演示增强for循环中数据类型是int的情况
for (int aa:array.arr02
) {
System.out.print(aa+"\t");
}
System.out.println();
//演示增强for循环中数据类型为数组的情况
System.out.println("_____________________");
for (int [] bb:array.arr03
) {
System.out.print(bb+"\t");
}
}
}
数组的拷贝
数组的拷贝操作需要用到System类中的static void arraycopy(obdect src , int srcpos , object dest , int destpos , int length)方法。这个方法中,src代表的是被拷贝的数组,srcpos指的是被拷贝数组的开始拷贝的位置的下标,dest表示拷贝的目标数组,destpos指的是目标数组的用于存储拷贝内容的起始位置的下标,length指的是拷贝的长度。因此这个函数的作用是将src数组中从下标srcpos的位置一直往下选取length个元素拷贝到dest数组中,dest数组中从下标为destpos的位置开始存储拷贝过来的内容。比如下面的程序代码所示,第一次将s数组中的内容全部拷贝到sBak数组中,存储拷贝内容的位置从下标0开始,第二次,将s数组中的内容全部拷贝到数组string1中,但是储存拷贝内容的位置从下标6开始,因此可以看到在运行结果中有很多的null,这些就是原本的string1数组中的元素,由于没有进行赋值操作,因此默认为初始值null。
package cn.luoyusanshu.array;
//数组的拷贝
public class Test03 {
public static void main(String[] args) {
String s[]= {"阿里","尚学堂","京东","搜狐","网易"};
String[] sBak = new String[6];
System.arraycopy(s,0,sBak,0,s.length);
for (int i = 0; i < sBak.length; i++) {
System.out.print(sBak[i]+"\t");
}
System.out.println();
String [] string1 = new String[12];
System.arraycopy(s,0,string1,6,s.length);
for (int i = 0; i < string1.length; i++) {
System.out.print(string1[i]+"\t");
}
}
}
标签:遍历,int,常规,length,数组,操作,拷贝,array
From: https://blog.csdn.net/qq_59750520/article/details/137478986