-
- 数组是一种常见的数据结构,可用于存储多个数据,每个数组元素放一个数据,通常通过数组元素的索引来访问数组元素,包括为数组元素赋值和取值,JAVA数组元素要求所有的数组元素具有相同的数据类型。因此,在一个数组中,数组元素的类型是唯一的,即一个数组里只能存储一种数据类型的数据。
-
- 一旦数组的初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度是不可以改变的,JAVA的数组既可以存储基本类型的数据,也可以存储引用类型的数据。只要数组的元素具有相同的类型即可,数组本身也是一种数据类型,它本身就是一种引用类型。
-
- 定义数组:
JAVA支持两种语法格式来定义数组:
type [ ] arrayName;
type arrayName [ ];
对于这两种语法格式,通常推荐使用第一种格式,定义数组的时候不能指定数组的长度。
- 定义数组:
-
- 数组的初始化:
数组必须先初始化,才可以使用,所谓初始化,就是为数组的数组元素分配内存空间,并为每个元素赋初始值。
数组的初始化有两种方式:
静态初始化:初始化时由程序员指定每个元素的初始值,有系统决定数组的长度。
静态初始化语法格式:arrayName =new type[ ]{元素1,元素2,元素3};
静态初始化简化语法:type [ ] arrayName={元素1,元素2,元素3};
数组的定义和初始化同时完成,静态初始化语法:int [ ] a={1,2,3};
动态初始化:初始化时由程序员只指定数组的长度,由系统为元素分配初始值。
动态初始化语法格式:arrayName =new type[length ];
数组的定义和初始化同时完成,动态初始化语法:int [ ] prices =new int[5];
- 数组的初始化:
-
- JAVA8强的工具类:Arrays
JAVA提供的Arrays类包含的一些static修饰的方法可以直接操作数组,这个Arrays包含了如下几个static修饰的方法。1.int binarySearch(type[ ]a,type key):使用二分法查询到key元素值在a数组中出现的索引;如果a数组不包含key元素值,则返回负数。调用该方法时要求数组中元素已经按升序排列,这样才能得到正确的结果。
2.int binarySearch(type[ ]a,int fromIndex,int toIndex,type key):这个方法与前一个方法类似,但它只搜索a数组中fromIndex到toIndex索引的元素。调用该方法时要求数组中元素已经按升序排列,这样才能得到正确的结果。
3.type[ ]copyOf(type[ ]original,int length):这个方法将会把original数组复制成一个新数组,其中length是新数组的长度。如果length长度小于original数组的长度,则新数组就是原数组的前面length个元素;如果length长度大于original数组的长度,则新数组的前面元素就是原数组的所有元素,后面补充0(数值类型)、false(布尔类型)、或者null(引用类型)。
4.type [ ]copyOfRange(type[ ]original,int from,int to):这个方法与前面的方法类似,但这个方法只复制original数组的from索引到to索引的元素。
5.boolean equals(type[ ]a,type[ ]a2):如果a数组和a2数组的长度相等,而且a数组和a2数组的数组元素也一一相同,该方法就返回true。
6.void fill(type[ ]a,type val):该方法将会把a数组的所有元素都赋值为val。
7.void fill(type[ ]a,int fromIndex,int toIndex,type val):该方法与前一个方法的作用相同,区别只是该方法仅仅将a数组的fromIndex到toIndex索引的数组元素赋值为val。
8.void sort(type[ ]a):该方法对a数组的数组元素进行排序。
9.void sort(type[ ]a,int fromIndex,int toIndex):该方法与前一个方法相似,区别是该方法仅仅对fromIndex到toIndex索引的元素进行排序。
10.String toString(type[ ]a):该方法将一个数组转换成一个字符串。该方法按顺序把多个数组元素连接在一起,多个数组元素使用英文逗号和空格隔开。
- JAVA8强的工具类:Arrays
import java.util.Arrays;
public class ArraysTest {
public static void main(String[] args) {
//定义一个a数组
int [] a=new int []{1,2,3,4,5};
//定一个a2数组
int [] a2=new int []{1,2,3,4,5};
//a数组和a2数组的长度相等,每个元素依次相等,将输出true
System.out.println("a数组和a2数组是否相等:"+Arrays.equals(a, a2));
//通过复制a数组,生成一个新的b数组
int [] b=Arrays.copyOf(a, 6);
System.out.println("a数组和b数组是否相等:"+Arrays.equals(a, b));
//输出b数组,将输出[1,2,3,4,5,0]
System.out.println("b数组的元素为:"+Arrays.toString(b));
//将b数组的第3个元素(包括)到第5个元素(不包括)赋值为1
Arrays.fill(b, 2, 4, 1);
//输出b数组,将输出[1,2,1,1,5,0]
System.out.println("b数组的元素为:"+Arrays.toString(b));
//对b数组进行排序
Arrays.sort(b);
//输出b数组的元素,将输出[0,1,1,1,2,5]
System.out.println("b数组的元素为:"+Arrays.toString(b));
}
}