java(四)数组(下)

一、数组

(1)数组元素的使用

一维数组和二维数组都将图通过索引符去访问数组中的元素,例如 boy[0]、boy[2]等,但需要注意(2)length的使用

数组中元素的个数被称为数组的长度,对于一维数组而言,“数组名字.length”的值就是数组中元素的个数;而对于二维数组,这句话的值是它含有的一维数组的个数。例如,对于

float a[] = new float[12];
int b[] new int[3][6];

a.length的值是12,b.length的值是3。

(3)数组的初始化

创建数组后,系统会给每个数组元素一个默认的值,例如int类型是0.

在声明数组的同时也可以给数组元素一个初始值,例如:

float arr[] = {21.3f,23.89f,2.0f,23f,778.98f};

上述过程称作 数组的初始化。相当于创建了一个长度为5的数组,再将每一个内存依次赋值。

当然,我们也可以用若干个一维数组来初始化一个二维数组,这些一维数组的长度可以不一样。

(4)数组的引用

如果我们在最开始的时候创建了两个不一样的数组a和b,系统将会为这两个数组分别分配不同的数组用来存放各自的数据。如果使用了下列赋值语句(需要注意的是,a和b的类型必须是相同的)

a=b;

那么,a所分配的内存和其中的元素将会被释放掉,之后指向b所指的内存位置。

(5)数组的表示格式

一个简单的输出数组元素值的方法,即让Arrays类调用:

public static String toString(int[] a)

该方法可以得到参数指定的一维数组a的如下格式的字符串表示

[a[0],a[1],...a[a.length-1]]

(6)复制数组

在前面的知识点中我们提及到,数组之间可以通过直接引用来改变数组元素的值。但是在内存上并不开辟出一块新的出来,所以为了完成数组的赋值,并且在后续使用新数组时不改变原先数组的值,我们要提出新的方法来进行数组复制。

①arraycopy方法

利用循环把一个数组的元素的值赋给另一个数组中的元素,java提供了一种更简练的方法,即让System类调用方法:

public static void arraycopy(sourceArrray,int index1,copyArray,int index2,int length)

可以将数组sourceArray中的索引值从index1到index+length-1元素中的数据复制到copyArray的某些元素中,copyArray数组从第index2个元素开始存放这些数据,如果数组copy不能存放下复制的数据(即溢出),程序运行将会发生异常。

②copyOf和copyOfRange方法

第一个方法有一个缺点,那就是实现必须创建好数组,现在我们提供新的方法,例如Arrays类调用方法:

public static double[] copyOf(double[] original,int newlength)
public static int[] copyOf(int[] original,int newlength)
public static char[] copyOf(char[] original,int newlength)
public static float[] copyOf(float[] original,int newlength)

该方法可以把参数original指定的数组从索引0开始的newlength个元素复制到一个新数组中,并且返回这个新数组,并且该数组的长度为newlength。如果newlength大于原数组的长度,那么多余的部分将会被系统默认赋值。

另外,还有一个方法可以将数组中的部分元素复制到另一个数组中,例如 

public static double[] copyOfRange(double[] original,int form,int to)
public static char[] copyOfRange(char[] original,int form,int to)
public static float[] copyOfRange(float[] original,int form,int to)
public static int[] copyOfRange(int[] original,int form,int to)

可以将original数组中的第from个至第to-1个元素复制到一个新数组中,并且返回这个数组,即新数组的长度将会是to-from。如果to的值大于数组的大于original的长度,那些空余的元素位置仍然会被系统赋默认值。

public static void sort(double a[],int start,int end)

(7)排序与使用二分法查找

介绍一种利用Arrays类调用方法实现对数组的快速排序,调用方法为

public static void sort(double a[])

可以将参数a指定的double类型数组按照升序排序。

public static void sort(double a[],int start,int end)

可以把参数a指定的数组按照索引start到end-1的元素值按照升序排序。

另外介绍一种调用方法时二分法查找,语句是

public static int binarySearch(double[] a,double number)

可以判断number指定的数是否存在于数组a中,其中数组a必须是事先已经排号的数组。如果a中存在与number数值相同的元素,那么该方法将会返回该元素的索引,否则返回一个负数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值