数组
数组是最为常见的一种数据结构,是相同类型的、用一个标识符封装到一起的基本类型数据序列或对象序列。
数组是具有相同数据类型的一组数据的集合。就是说数组中的每个元素具有相同的数据类型。在Java中将数组看作一个对象。
一、一维数组
1.1 创建一维数组
数组作为对象允许使用 new 关键字进行内存分配。在使用数组之前,必须首先定义数组变量所属的类型。一维数组的创建有两种形式。
1、先声明,在用 new 运算符进行内存分配
声明以为数组有下列两种方式:
数组元素类型 数组名[];
数组元素类型[] 数组名;
数组元素类型决定了数组的数据类型。它可以是Java中任意的数据类型,包括简单类型和组合类型。数组名是一个合法的标识符,符号 " [] " 指明该变量是一个数组类型变量。单个 “ [ ] ” 表示要创建的数组是一个一维数组。
声明数组后,还不能立即访问它的任何元素,因为声明数组只给出了数组名和元素的数据类型,使用数组还要为它分配内存空间。在为数组分配内存空间时必须指明数组的长度。为数组分配内存空间的语法格式如下:
数组名 = new 数组元素的类型[数组元素的个数];
数组名,即被连接到数组变量的名字。数组元素的个数,即指定数组中变量的个数,也就是数组的长度。
数组通过下标来区分数组中不同的元素。数组的下标是从0开始的。使用 new 关键字为数组分配内存时,整形数组中各个元素的初始值都为0。
2、声明数组的同时为数组分配内存
这种方法是将数组的声明和内存分配合在一起执行:
数组元素的类型[] 数组名字 = new 数组元素的类型[数组元素的个数];
数组元素的类型 数组名字[] = new 数组元素的类型[数组元素的个数];
例:以上面几种方式声明两个个长度为5的整型数组,并打印其初始值。
//先声明后分配内存
int[] array1,array2; //同时声明两个数组
//相当于 int array1[],array2[];
array1 = new int[5]; //分配内存空间
/*声明数组的同时为数组分配内存
int[] array1 = new int[5];
int array2[] = new int[5];
*/
//for循环语句打印数组元素
for(int i = 0; i < 5; i++)
System.out.println(array1[i]);
//使用for each 循环语句打印元素
for(int x : array2)
System.out.println(x);
1.2 初始化一维数组
数组的初始化可分别初始化数组中的每个元素。创建并初始化数组有以下两种形式:
//一种初始化方式
int[] arr; //声明
int arr = new int[]{1,2,3,4,5};//初始化
//第二种初始化方式
int arr1[] = {1,2,3,4};//创建并初始化
//int[] arr1 = {1,2,3,4}
数组的初始化就是包括在大括号之内用逗号分开的表达式列表。用逗号分隔数组中的各元素,系统会自动为数组分配一定的空间。数组的大小就是初始值的个数。
数组初始化不能定义数组的长度,否则编译器会报错。
第一种方式可以在不创建新变量的情况下重新初始化一个数组。
int arr[];
int arr = new int[]{1,2,3,4,5};//初始化
int arr = new int[]{6,7,8,9,10};//重新初始化
/*相当于以下语句的简写
int arr[];
int arr = new int[]{1,2,3,4,5}; //初始化
int arr1[] = {6,7,8,9,10};//创建并初始化数组arr1
arr = arr1;
*/
在