数组是一组具有相同数据类型的序列。这数据类型可以是基本数据类型,也可以是自定义数据类型。数组是一种常见的数据结构,是基于顺序存储结构实现。它遍历简单有效,但是数组的大小是固定的,同时,对数组进行删除和插入等操作效率较低。
Java语言中,数组很是重要。Java数组内的元素可以是基本数据类型,也可以对象引用类型。根据数组的维数可以划分为一维数组、二维数组和多维数组。实际上二维数组就是一维数组的数组,而多维数组依次类推。因而,认识和理解一维数组尤为关键。
1.一维数组的创建、初始化与应用
一维数组表示一维空间的数组,通过整型标签可以访问数组中的每个元素。
一维数组的创建,语法格式如下:
数组类型[] 数组名;
或者
数组类型 数组名[];
建议采用第一种创建数组的方式。
需要维数组分配内存空间的语法格式如下:
数组名 = new 数组类型[数组长度];
创建数组后,需要对数组进行初始化,数组初始主要有如下方式:
int[] arr = {1,2,3,4,5};//数组初始化第一种方式
int[] arr = new int[]{1,2,3,4,5};//数组初始化第二种方式
或者
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
创建和初始化数组,就可以对数组进行一些操作和应用。
应用一:如何遍历数组中的内容?
遍历数组的内容就是访问并且输出数组中的内容,实例代码如下:
/**
*<p>Title:遍历一维数组实例</p>
*<p>Description:遍历一维数组的内容</p>
*<p>Copyright:Copyright(c) 2012</p>
*<p>Filename:PrintArray1Content.java</p>
*@author 王路情
*@version 1.0
*/
public class PrintArray1Content {
/**
*方法描述:主方法
*输入参数:String[] args
*返回类型:void
*/
public static void main(String[] args) {
int[] arr1 = new int[]{1,2,3,4,5};
System.out.println("访问并输出一维数组的内容:");
for(int index=0;index<arr1.length;index++) {
System.out.print(arr1[index] + " ");
}
System.out.println();
}
}
运行结果如下所示:
访问并输出一维数组的内容:
1 2 3 4 5
应用二:如何全部复制数组中的内容?
在此,介绍几种常用的方法。
第一种方法:利用遍历实现复制
/**
*<p>Title:全部复制一维数组内容实例</p>
*<p>Description:采用遍历全部复制一维数组内容</p>
*<p>Copyright:Copyright(c) 2012</p>
*<p>Filename:CopyArray1Way1.java</p>
*@author 王路情
*@version 1.0
*/
public class CopyArray1Way1 {
/**
*方法描述:主方法
*输入参数:String[] args
*返回类型:void
*/
public static void main(String[] args) {
int[] arr1 = new int[]{1,2,3,4,5};
int[] arr2 = new int[arr1.length];
//全部复制一维数组的内容
for(int index=0;index<arr1.length;index++) {
arr2[index] = arr1[index];
}
System.out.println("访问并输出一维数组的内容:");
for(int index=0;index<arr2.length;index++) {
System.out.print(arr2[index] + " ");
}
System.out.println();
}
}
运行结果如下所示:
访问并输出一维数组的内容:
1 2 3 4 5
第二种方法:利用Arrays类的copyOf()或copyOfRange()方法
import java.util.Arrays;
/**
*<p>Title:全部复制一维数组内容实例</p>
*<p>Description:采用遍历全部复制一维数组内容</p>
*<p>Copyright:Copyright(c) 2012</p>
*<p>Filename:CopyArray1Way2.java</p>
*@author 王路情
*@version 1.0
*/
public class CopyArray1Way2 {
/**
*方法描述:主方法
*输入参数:String[] args
*返回类型:void
*/
public static void main(String[] args) {
int[] arr1 = new int[]{1,2,3,4,5};
//利用Arrays类中的copyOf()方法实现复制数组全部内容
int[] arr2 = Arrays.copyOf(arr1,arr1.length);
//利用Arrays类中的copyOfRange()方法实现复制数组全部内容
int[] arr3 = Arrays.copyOfRange(arr1,0,arr1.length);
System.out.println("使用Arrays类copyOf()方法实现复制数组全部内容:");
for(int index=0;index<arr2.length;index++) {
System.out.print(arr2[index] + " ");
}
System.out.println();
System.out.println("使用Arrays类copyOfRange()方法实现复制数组全部内容:");
for(int index=0;index<arr3.length;index++) {
System.out.print(arr3[index] + " ");
}
System.out.println();
}
}
运行结果如下所示:
使用Arrays类copyOf()方法实现复制数组全部内容:
1 2 3 4 5
使用Arrays类copyOfRange()方法实现复制数组全部内容:
1 2 3 4 5
第三种方法:利用System类的arraycopy()方法
/**
*<p>Title:全部复制一维数组内容实例</p>
*<p>Description:采用System类的arraycopy()全部复制一维数组内容</p>
*<p>Copyright:Copyright(c) 2012</p>
*<p>Filename:CopyArray1Way2.java</p>
*@author 王路情
*@version 1.0
*/
public class CopyArray1Way3 {
/**
*方法描述:主方法
*输入参数:String[] args
*返回类型:void
*/
public static void main(String[] args) {
int[] arr1 = new int[]{1,2,3,4,5};
int[] arr2 = new int[arr1.length];
//利用System类中的arraycopy()方法实现复制数组全部内容
System.arraycopy(arr1,0,arr2,0,arr1.length);
System.out.println("使用System类arraycopy()方法实现复制数组全部内容:");
for(int index=0;index<arr2.length;index++) {
System.out.print(arr2[index] + " ");
}
System.out.println();
}
运行结果如下所示:
使用System类arraycopy()方法实现复制数组全部内容:
1 2 3 4 5
2.二维数组简介
二维数组实际上是一维数组的数组。二维数组的创建、初始化和应用可以类比一维数组。
例如二维数组的创建及初始化如下:
int[][] arr = ]{{1,2},{3,4}};//二维数组的创建及初始化
或者
int[][] arr = new int[][]{{1,2},{3,4}};//二维数组的创建及初始化
二维数组的遍历,代码如下:
/**
*<p>Title:遍历二维数组实例</p>
*<p>Description:遍历二维数组的内容</p>
*<p>Copyright:Copyright(c) 2012</p>
*<p>Filename:PrintArray1Content.java</p>
*@author 王路情
*@version 1.0
*/
public class PrintArray2Content {
/**
*方法描述:主方法
*输入参数:String[] args
*返回类型:void
*/
public static void main(String[] args) {
int[][] arr1 = new int[][]{{1,2},{3,4}};
System.out.println("访问并输出二维数组的内容:");
for(int index=0;index<arr1.length;index++) {
for(int index1=0;index1<arr1[index].length;index1++) {
System.out.print(arr1[index][index1] + " ");
}
System.out.println();
}
}
}
运行结果如下所示:
访问并输出二维数组的内容:
1 2
3 4
3.总结
1)数组是一种常用的数据结构,不管面向对象编程,还是面向过程编程,数组都很重要。
2)Java中数组的元素可以是基本的数据类型,也可以是对象引用类型。
3)高维数组可以看做是一位数组不断地变化迭代而来,注重内存分配。
4.参考资料
【1】明日科技 李钟尉,陈丹丹编著.Java编程宝典.北京:人民邮电出版社,2010.
【2】Java编程思想(第三版)电子书.
【3】Java2核心技术卷I基础知识(第七版)电子书.