JAVA学习笔记总结(四):数组(Array)

来源:互联网 发布:focusky mac版感觉很木 编辑:程序博客网 时间:2024/05/24 04:45

一维数组

在Java中有两种数据:primitive类型和objects.

数组属于object类型,所以必须用new来创建数组, 同时数组具备一下特性:

1. 数组创建之后就不能改变大小

2. 数组创建之后,若没有指定初始值,则依据数组类型的不同,会预设不同的初始值

int[] myArray;                      // 定义一个指向数据的refference

myArray = new int[100];     // 创建一个可容纳100个元素的数组,并且用myArray指向它,默认所有的元素值被初始化成0

 

也可以在创建数组的同时进行初始化, 这种方式不用指定数组的长度:

int[] myArray = {0,3,6,9,12,15,18,21,24,27};

或者

int[] myArray = new int[] {0,3,6,9,12,15,18,21,24,27};

 

3. 数组有一个length属性,可以取回数组中元素的个数

int arrayLength = myArray.length;

 

二维数组

二维数组用数组“名称”与“两个索引”来指定存取数组中的元素。

其定义方式与一维数组类似:

int[][] arr = {{1,2,3},

               {4,5,6}};

注意length所代表的长度,数组名后直接加上length(如arr.length),所指的是数组有几行; 指定索引后加上length(如arr[0].length),指的是该行拥有的元素,也就是列的数目。

数组的复制

1. 使用System.arraycopy()方法

   System.arraycopy(来源,起始索引,目的,起始索引,复制长度);

   例如:

   int[] arr1 = {1,2,3,4,5};

   int[] arr2 = new int[5];

   System.arraycopy(arr1, 0, arr2, 0, arr1.length);

2. 在Java SE 6中,Arrays类新增了copyOf()方法,可以直接返回一个新的数组对象,而其中包括复制的内容

   例如:

   import java.util.Arrays;

   int[] arr1 = {1,2,3,4,5};

   int[] arr2 = Arrays.copyOf(arr1,arr1.length);

   Arrays的copyOf()方法返回的数组是新的数组对象,所以改变返回数组中元素的值不会影响原来数组中元素的值。copyOf()方法中第二个变量指定新数组的长度,如果新数组的长度超过原来数组的长度,则多出来的元素会保留数组默认值。

   除了copyOf()方法外,还有copyOfRange()方法,可以指定来源数组以及要复制的索引范围:

   int arr1 = {1,2,3,4,5};

   int arr2 = Array.copyOfRange(arr1,1,4);  // 复制索引1开始到索引4(但不包括索引4)的元素,arr2的元素会是2,3,4

 

Array类

Array类位于java.util包中,它提供了几个方法可以直接使用:

sort() - 对指定数组排序,使用的是快速排序法

binarySearch() - 让你对已排序的数组进行二分查找,如果找到指定的值就返回该值所在的索引,否则就返回负值

fill() - Arrays.fill()将已创建数组的默认值改为指定值

equals() - 比较两个数组中的元素值是否全相等,如果相等返回true,否则返回false

 

foreach与数组

在Java SE 6中, foreach的语法为:

int[] arr = {1,2,3,4,5};

for(int element : arr)

    System.out.println(element);

注意, element类型必须与数组元素类型相同

原创粉丝点击