数组

概念:同一种数据类型的集合,其实数组就是一个容器。数组属于引用型变量。

1、声明数组

1>声明一维数组的两种格式:

数组的元素类型   数组名字[];

数组的元素类型[]   数组名字;

2>声明二维数组的两种格式:

数组的元素类型    数组名字[][];

数组的元素类型[]    数组名字[]

注:Java不允许在声明数组的方括号内指定数组元素的个数。

2.创建数组

分配内存空间,即创建数组。格式:

数组名字 = new 数组元素的类型[数组元素的个数]

 

通过new建立的实例都存放在堆内存中,主要是数组和对象;局部变量(方法中的变量、方法中的参数变量、for循环中的变量)都存放在栈内存中。

数组变量存放的是堆中分配的内存单元的首地址。

 

声明数组可以和创建数组一起完成,例如:

int[]  arr = new int[3];

 

3.长度、初始化、输出

1>一维数组:“数组名.length”表示数组中元素的个数

二维数组:“数组名.length”表示含有的一维数组的个数

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

也可以声明数组时初始化,例如:

int[]  x = {1,2,3};

int[]  x = new int[3];

x[0] = 1;x[1] = 2;x[2] = 3;

3>可以循环输出;

也可以让Arrays类调用:

Public static String toString(int[] a)方法。

输出格式为:System.out.println(Arrays.toString(a));

4.数组的引用

如果两个相同类型的数组具有相同的引用,它们就有完全相同的元素。

int[]  x = new int[3];

int[]  y = x;

y[1]  = 89;

System.out.println(x[1]);的值为89

System.out.println(x);输出的是数组的引用

当数组是char型数组时,输出的是所有元素的值,例如:

char[]  s = {‘a’,’b’,’c’};

System.out.println(s);的结果是:abc

如果想输出char型数组的引用,必须让数组s和字符串做并置运算。例如:

System.out.println(“ ”+s);

5.复制数组

1>arraycopy 方法

System类调用方法:

Publlic static void arraycopy(sourceArray,int index1,copyArray,int index2,int length)

说明:将数组sourceArray从索引index1开始的length个元素中的数据复制到数组copyArray中,copyArray数组从index2开始存放这些数据。

例如:

import  java.util.Arrays;
Public cass Example
{
Public static void main(String  args[])
{
char[] a = {‘a’,’b’,’c’,’d’};
b ={‘1’,’2’,’3’,’4’};
System.arraycopy(a,0,b,1,2);
System.out.println(Arrays.toString(b));
}
}


运行结果为:[1,a,b,4]

2>copyOfcopyOfRange方法

Arrays类调用方法:

Public static int[] copyOf(int[]  original,int newlength)

说明:把参数original指定的数组中从0索引开始的newLength个元素复制到一个新数组中,并返回这个新数组,新数组的长度为newLength.

返回类型还有float[]double[]char[]等。例如:

Int[] a = {100,200,300};

Int[] b = Arrays.copyOf(a,4);

那么b[0] = 100,b[1] = 200,b[2] = 300,b[3] = 0.b的长度为4,最后元素取默认值。

 

把数组中部分元素复制到另一个数组中,例如:

Public static int[] copyOfRange(int[] original,int from,int to)

说明:把参数original指定的数组中从索引fromto-1 的元素复制到一个新数组中,并返回这个新数组,数组长度to-from

6.排序与使用二分法查找

Arrays类调用方法:

Public static void sort(int[] a)

把参数a指定的数组按升序排序。

Arrays类调用方法:

Public static void sort(int[] aint  start,int end)

把参数a指定的int型数据中索引startend-1中的元素按升序排列。

 

 

Arrays类调用方法(二分法):

Public static void binarySearch(int[] aint number)

判断参数number指定的数是否在参数a指定的数组中。数组a必须事先已排序。如果number和数组a中某个元素相同,返回该元素的索引,否则返回一个负数。

插入一个数仍然有序二分代码:

Public static int binarysearch(int[] arr,int number)
{
Int max = arr.length-1;
Int min = 0;
Int mid;
While(min <= max)
{
Mid = (min + max)/2;
If(arr[mid] = number)
Return mid;
Else if(arr[mid] < number)
Min = mid +1;
Else
Max = mid -1;
}
Return min;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值