数组是具有相同数据类型的一组数据的集合。
数组中的每个元素具有相同的数据类型。
数组在Java中就是对象,虽然基本数据类型不是对象,但是由基本数据类型组成的数组则是对象。在程序设计中引入数组可以更有效地管理和处理数据。可根据数组的维数将数组分为一维数组、二维数组……
数组可以理解为是一个巨大的“盒子”,里面可以按顺序存放多个类型相同的数据,比如可以定义 int 型的数组 scores 存储 4 名学生的成绩
数组中的元素都可以通过下标来访问,下标从 0 开始。例如,可以通过 scores[0] 获取数组中的第一个元素 76 ,scores[2] 就可以取到第三个元素 92 啦!
如果存取超出索引范围,就会抛出ArrayIndexOutOfBoundsException错误。
提示: 声明数组时,就Java开发人员的撰写习惯来说,建议将[]放在类型关键词之后。[]也可以放在声明的名称之后,这是为了让C/C++开发人员看起来比较友好,目前来说已不建议:
int scores[] = {76,83,92,87};
有关Java程序写作的一些惯例,可以参考(Google Java Style):
http://google-styleguide.googlecode.com/svn/trunk/javaguide.html
Java 中操作数组只需要四个步骤:
三种常见的数组创建方式:
1.int[] scores=new int[5]
2.int[] scores={71,82,75,98,65}
3.int[] scores=new int[]{71,82,75,98,65}
使用循环操作 Java 中的数组
实际开发中我们经常使用循环控制数组成员的操作。如:
运行结果:
其中, 数组名.length 用于获取数组的长度
需要注意的“小毛病”:
1、 数组下标从 0 开始。因此 scores[3] ,表示数组中的第 4 个元素,而并非第 3 个元素
2、 数组下标的范围是 0 至 数组长度-1 ,如果越界访问,就会报错。如:
运行时会报如下错误:
上面错误信息的意思是数组下标超过范围,即数组访问越界。在上面的代码中创建一个长度为 2 的数组,因此数组下标范围是 0 到 1 ,而程序中下标出现了 2 ,即 scores[2] ,超过了范围,造成数组访问越界。
===============================================================
使用 Arrays 类操作 Java 中的数组
Arrays 类是 Java 中提供的一个工具类,在 java.util 包中。该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序、搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴~~)。
Arrays 中常用的方法:
1、 排序
语法: Arrays.sort(数组名);
可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该数组的排序(按升序排列),如:
运行结果:
2、 将数组转换为字符串
语法: Arrays.toString(数组名);
可以使用 toString( ) 方法将一个数组转换成字符串,该方法按顺序把多个数组元素连接在一起,多个元素之间使用逗号和空格隔开,如:
运行结果为:
输出数组nums中的元素:[25,7,126,53,14,86]
3、 填充替换数组元素
语法:Arrays.fill(Object[] a, int fromIndex, int toIndex, Object val);
将指定的 Object 引用分配给指定 Object 数组指定范围中的每个元素。
填充的范围从索引 fromIndex(包括)一直到索引 toIndex(不包括)。(如果 fromIndex==toIndex,则填充范围为空。)
数组中的元素定义完成后,可通过Arrays类的静态方法fill()来对数组中的元素进行替换。该方法通过各种重载形式可完成任意类型的数组元素的替换。fill()方法有两种参数类型。下面以int型数组为例介绍fill()方法的使用方法。
import java.util.Arrays;//使用Arrays类方法时必须添加此行,导入包
public class ArryDemo {
public static void main(String[] args) {
int[] arrs = { 1, 2, 3, 4 };
Arrays.fill(arrs, 1, 3, 6);
for (int i : arrs) {
System.out.println(i+"\t");
}
}
}
运行结果是:
1 6 6 4
4、 复制数组
语法:Arrays.copyOf(int[] original, int newLength);
复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。
int[] arrs = { 1, 2, 3, 4 };
int[] temp1 = Arrays.copyOf(arrs, 2);// int[] temp1 = {1,2}
//copyOf()方法复制一个新的数组元素,如果复制元素大于被复制数组索引上限,则新数组超出上限的新元素会以0 初始化
int[] temp2 = Arrays.copyOf(arrs, 6);// int[] temp2 = {1,2,3,4,0,0};
5、 数组查询
语法:
(1)Arrays.binarySearch(Object[].Object key)
(2)Arrays.binarySearch(Object[] a.,int fromIndex , int toIndex,Object key)
参数:
a
- 要搜索的数组
fromIndex
- 要搜索的第一个元素的索引(包括)
toIndex
- 要搜索的最后一个元素的索引(不包括)
key
- 要搜索的值
Arrays类的binarySearch()方法,可使用二分搜索法来搜索指定数组,以获得指定对象。该方法返回要搜索元素的索引值。
int[] arrs = { 1, 2, 3, 4 };
int index1 = Arrays.binarySearch(arrs, 4);// index = 3
int index2 = Arrays.binarySearch(arrs, 1, 3, 3);//index = 2
注:文中部分内容摘自 慕课网,《Java学习笔记》