Java中经常会提到数组类型,因为java数组是类类型,当然,作为Java中常用的类Arrays,想要学习java数组类,我们必须先学好java数组,学起java数组类来才能事半功倍。本文就来和大家一起来学习Java数组类。
我们先来看看java数组类型变量的定义方法,我们还是通过伪代码来演示:
type array[] = new type[size];
我们再和定义类对象的方法做个对比:
ClassName obj = new ClassName();
大家可以发现,它们很相似!其实在Java中数组类型就是一种类类型,该类型中最常用的它的成员变量:length。通过该成员变量,可以得到数组的大小,也就是伪代码中size的值。另外,在定义数组时还有一种形式,我们通过伪代码来演示:
type[] array = new type[size];
该形式是Java中推荐的形式,因为通过这种形式可以一目了然地看出是数组类型。在对比一下前面的定义形式,我们就会发现,前面的形式是在沿用C语言中数组的定义形式,其实这是Java为了考虑编程人员的习惯而保留的。
我们在定义数组类型的变量后,都会对该变量进行初始化操作。我们还是通过伪代码的形式来演示数组初始化。
type array[] = {val1,val2,…};
这种方式和C语言中数组的初始化方式相同,其优点是自动指定数组的大小,并且会对数组中的成员进行初始化操作。
还有一种数组初始化方式:
type array[] = new type[size];
这种方式是典型的面向对象初始化方式,它会依据size的值来初始化数组的大小,并且把数组中每个元素初始化为类型的默认值。比如,type为int类型时,它的默认值为0,那么int类型的数组使用这种方式初始化时,数组中每个元素的初始值为0. 接下来再说一下这里的size,它可以是常量或者变量,甚至是0。这点是与C不同的,C中只能使用常量。
前面我们已经奠定了学习数组类Arrays的基础,我们现在正式来讲数组类Arrays。为了方便我们对数组的操作,Java还提供了Arrays类,该类提供了许多静态方法,接下来我们介绍一些常用的静态方法。 Arrays.fill(type[] arg0, type arg1); //填充数组,使用arg1来填充数组arg0
Arrays.sort(type[] arg0); //对数组成员排序,默认为升序。
Arrays.binarySearch(type[] arg0, type arg1);
//在数组成员中查找某个变量,在数组arg0的成员中查找变量arg1 这些静态方法都是重载方法,可以对不同类型的数组进行操作。比如,我们把上面代码中的type替换为int,那么它就可以对int类型的数组进行相关操作,同理把type替换为double,那么它就可以对double类型的数组进行相关操作。这里的type不但可以是基本的类型,而且可以为类类型。 说了这么多,我们动手来实践一下。下面是程序的代码,请大家参考:public class ArrayExam{
public static void main(String args[])
{
int [] array1 = {1,2,3,9,8,7} ;
int array2[] = new int[6];
System.out.println(“arrar1 length:”+array1.length);
System.out.println(“arrar2 length:”+array2.length);
System.out.print("array1 members: ");
for(int i=0; i<array1.length; p="" ++i)<="">
System.out.print(array1[i]+" ");
System.out.println();
System.out.print("array2 members: ");
for(int i=0; i<array1.length; p="" ++i)<="">
System.out.print(array2[i]+" ");
System.out.println();
Arrays.fill(array2, 6);
Arrays.sort(array1);
System.out.print("array1 members: ");
for(int i=0; i<array1.length; p="" ++i)<="">
System.out.print(array1[i]+" ");
System.out.println();
System.out.print("array2 members: ");
for(int i=0; i<array1.length; p="" ++i)<="">
System.out.print(array2[i]+" ");
System.out.println();
if( 1== Arrays.binarySearch(array1,6) )
System.out.println(“6 is found in array1”);
else
System.out.println(“6 is not found in array1”);
}
}
在上面的程序中,我们定义的int类型的数组,然后使用了两种初始化的数组的方法,并且把数组中每个成员的值都打印出来。接下来使用了Arrays类
的静态方法对数组进行填充,排序和查找操作。下面是程序的运行结果,请大家参考:arrar1 length:6
arrar2 length:6
array1 members: 1 2 3 9 8 7
array2 members: 0 0 0 0 0 0
array1 members: 1 2 3 7 8 9
array2 members: 6 6 6 6 6 6
6 is not found in array1最后再说一下数组的复制,正常情况下可以使用等号复制或者给数组赋值(a1=a2)。但是我们不推荐这样的操作,因为它相当于给一个数组添加了一个新的引用,常用的做法是使用Arrays类提供的静态方法:copyOf(type[] a, int b)例子:a1=Arrays.copyOf(a2,a2.length)表示把数组a2中的内容复制给数组a1。虽然这两个数组的内容相同,但是它们却不同的数组。因为它们拥有自己的独立的内存空间。