数组的基本使用以及操作数组的方法

数组的定义及初始化

数组可以看成存放固定大小同类型元素的集合,在内存中是一段连续的空间。

创建数组:
元素的个数只能写在后面。

int[] arr = new int[5];		//创建存放5个int型元素的数组
double[] array2 = new double[5]; // 创建一个可以容纳5个double类型元素的数组
String[] array3 = new String[3]; // 创建一个可以容纳3个字符串元素的数组

当然,也可以像 C 语言那样创建数组,但是不推荐。

在创建数组的时候,指定数组中元素的个数叫做动态初始化

dataType[] arrayName = new dataType[arraySize];
例如:
int[] arr = new int[5];	

在创建数组的时候,指定了具体元素的值叫做静态初始化

dataType[] arrayName = new dataType [ ]{value0, value1, ..., valuek};
例如:
int[] arr=new int[]{1,2,3,4,5};		//此时,元素的个数就不能填在 [ ]里

注意:

  1. 静态初始化会根据 { } 中元素个数来确定数组的长度。
  2. 静态初始化时, { } 中数据类型必须与 [ ] 前数据类型一致。
  3. 静态初始化可以简写,省去后面的 new dataType [ ]。
 例如:int[] arr={1,2,3,4,5,6};

动态初始化和静态初始化都可以分成两步:

int[] array1;
array1 = new int[10];

int[] array2;
array2 = new int[]{10, 20, 30};

但是省略 new dataType [ ] 后就不能分成两步:

 int[] array3;
 array3 = {1, 2, 3};		错误,省略 new int[] 后不能分成两步

数组的使用

数组在内存中是一段连续的空间,数组的元素是通过下标(也叫索引)访问的,数组索引从 0 开始,到数组长度 -1 结束。例如长度为 5 的数组,那么数组首元素的下标就是 0,最后一个元素的下标就是 4。

通过下标访问数组
上面这个数组,能访问的元素就是 arr[0] 到 arr[4] ,超过 arr[4] 后就会报下标越界异常:

越界异常
数组的长度:

我们可以通过 数组对象.length 获取到数组的长度,这样就可以更高效的访问数组里的元素:
arr.length


for-each

这里介绍 for 循环的另一种使用,可以更高效的遍历数组。语法格式如下:

for(type element: array)
{
    System.out.println(element);
}

例如:
for-each

数组作为函数的参数

当我们将基本数据类型当作形参传递时,并不会改变实参:
基本数据类型传参

当数组作为参数传递时:在 func2 方法内部修改数组的内容,方法外部的数组内容也发生改变:

数组传参
这是因为数组是引用类型,按照引用类型来进行传递,是可以修改其中存放的内容的。

数组作为函数的返回值

如果想将数组作为参数返回时,只需在相应的函数返回值类型做修改即可。
例如,在方法中求斐波那锲数列,并将结果返回:
数组作为返回值

操作数组的方法

下面介绍几个 Java 提供的方法,可以更灵活的使用数组:

将数组以字符串的形式打印
Arrays.toString(int[] a);

案例:
在这里插入图片描述

数组拷贝:
Arrays.copyOf (int[] original, int newLength)
original:被拷贝的数组。
newLength:要拷贝的长度。

案例:
copyOf

拷贝数组的某个范围:
Arrays.copyOfRange(int[] original, int from, int to)

案例:
copyOfRange

将指定的值分配给指定的 int 数组的每个元素。
Arrays.fill(int[] a, int val)

案例:
fill

按照数字顺序排列指定的数组。
Arrays.sort(int[] a)

案例:
sort

在数组中查找指定的值,若数组无序,使用前需将数组排序。
Arrays.binarySearch(int[] a, int key)
如果数组中有指定的值,则返回指定值的下标,若没有指定值,则返回指定值按顺序放到数组中的下标值减一。

案例:
查找

查找
以上就是关于数组的基本使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值