数组

数组是一组具有相同数据类型的序列。这数据类型可以是基本数据类型,也可以是自定义数据类型。数组是一种常见的数据结构,是基于顺序存储结构实现。它遍历简单有效,但是数组的大小是固定的,同时,对数组进行删除和插入等操作效率较低。

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基础知识(第七版)电子书.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值