java中数组的相关操做

来源:互联网 发布:淘宝特色美食店铺推荐 编辑:程序博客网 时间:2024/05/21 18:32
 

 数组是相同类型变量的集合,可以使用共同的名字引用它。数组是一种特殊的数据类型,有以下的特点,一个数组所有的元素都是同一种数据类型,数组中的元素是有顺序的,数组的一个元素通过数组名和数组下标来确定。我想这几个特点我们都知道,我们学其他的语言时候,已经都知道了,但是java的数组和其他语言还是有不同的地方,在java中每一行的元素个数可以是不同的。

       数组的创建需要两个步骤,1:声明一个数组;2:创建一个数组。在这里说明一下,什么一个数组,只是给声明的数组名分配了空间,并没有真正的数据。当我们创建一个数组时候,才将这个数组存储数据的地址指向数据的声明的名字。在java中数组可以是任意数据类型的。数组可以在创建的时候进行初始化,也可以在创建了之后对其初始化。下面就举例说明创建一个行列不等的二维数组。

int[][] arr = new int[3][];

arr[0] = new int[1];

arr[1] = new int[2];

arr[2] = new int[3];//具体的赋值读者自己实现

这样就创建了一个三行,第一行一个数据,第二行两个数据,第三行三个数据的int数组arr。

         在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。在数组中我们用的比较多的就是后面的几个操做:1、数组的复制:System.arraycopy();2、数组的排序:Arrays.sort();3、在已排序的数组中查找某个元素:Arrays.binarySearch()。
下面先介绍System.arraycopy()方法,在java的帮助文档中:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPos  srcPos+length-1 之间的组件被分别复制到目标数组中的 destPos  destPos+length-1 位置。
        在运用这个方法的时候,注意数组复制的时候不要越界,比如我们数组中只有八个数据,但是我们赋值的时候长度写了九个,或者我们复制到的目的数组不能放下源数组想要赋值的数据,这样都会报出一个异常。还有一点需要注意,在java中的区间都是左开右闭的,比如我们写8到10,返回的结果是8和9。 下面有一个例子:
int[] num1=new int[]{1,2,3}; int[] num2=new int[10]; System.arraycopy(num1,1,num2,8,2); for(int i=0;i<num2.length;i++) {System.out.println(num2[i]); }
但是需要注意的如果数组是一个对象数组,在复制的时候,复制的数组的引用,虽然表面看着是复制出来了两个数组,但是操做的确实同一个地址空间中的数据,所以如果修改一个数组中的数据,同样也会影响另一个数组,这个大家自己写代码去实验。
        在java中对于Arrays.sort()和arrays.bianrySearch()都进行了重载,大家可以自己参考java帮助手册去学习,注意一点,搜索函数是对一个已经排好序的数组进行搜索,所以这两个函数应该是配合使用的。下面我们举一个对象数组排序的例子(对象数组排序需要先实现Comparable接口中的compareTo()方法):
在compareTo()方法中,Object  A.compareTo(Object B),如果A大于B返回1,A等于B返回0,A小于B返回-1。只要将compareTo()方法写好了,就能按照自己的方法对数组进行排序了。对于排序还可以实现java.util.Comparator接口。
         数组对于我们编程很重要,希望对你有帮助。
原创粉丝点击