Java 数组总结
数组是 Java程序中最常见的一种数据结构,它能够将相同类型的数据用一个标识符封装到一起,构成一个对象序列或基本数据类型。
数组属于复合数据类型,一个数组可以拥有多个数组元素,这些数组元素可以是基本数据类型或复合类型。按照数组元素类型的不同,数组可以分为数值数组、字符数组、指针数组、结构数组等各种类型。按照数组内的维数来划分,可以将数组分为一维数组和多维数组。
1.一维数组
1.1.声明一维数组
数组本质上就是某类元素的集合,每个元素在数组中都拥有对应的索引值,只需要指定索引值就可以取出对应的数据。在Java 中声明一维数组的格式如下:
int[] array;
也可以如下:
int array[];
1.2.创建一维数组
创建数组实质上就是为数组申请相应的存储空间,数组的创建需要用大括号“{}”括起来,然后将一组相同类型的数据放在存储空间里,Java 编译器负责管理存储空间的分配。创建一维数组的方法十分简单,具体格式如下所示。
int[] a={1,2,3,4,5};
1.3.初始化一维数组
在 Java 程序里,一定要将数组看作一个对象,它的数据类型和前面的基本数据类型相同。很多时候我们需要对数组进行初始化处理,在初始化的时候需要规定数组的大小。当然,也可以初始化数组中的每一个元素。下面的代码演示了3种初始化一维数组的方法。
int[] a=new int[8];
int[] a=new int{1,2,3,4,5,6,7,8};
int[] a={1,2,3,4};
在初始化数组的时候,当使用关键字new 创建数组后,一定要明白它只是一个引用,知道将值赋给引用,开始进行初始化操作后才算真正结束。
2.二维数组
2.1.声明二维数组
我们可以把二维数组看作一种特殊的一维数组,其中的每个元素又是一个数组。声明二维数组的语法格式如下所示:
float A[][];
char B[][];
int C[][];
2.2.创建二维数组
创建二维数组的过程,实际上就是在计算机上申请一块存储空间的过程,例如:
int A[][]={{1,3,5},{2,4,6}};
2.3.初始化二维数组
使用下面的语法格式实现:
array = new int[]...[]{第一个元素的值,第二个元素的值,第三个元素的值,...}
或者用对象数组的语法来实现
array=new int[]...[]{new 构造方法(参数列),{new 构造方法(参数列)}}
3.三维数组
3.1.声明三维数组
声明三维数组如下:
float a[][][];
3.2.创建三维数组
int[][][] a=new int[2][2][3]
上述代码创建了一个2×2×3的三维数组。
3.3.初始化三维数组
int[][][] a={{{1,2,3},{4,5,6}},{{7,8,9},{10,11,12}}};
4.操作数组
4.1.复制数组
复制数组是指复制数组中的数值,在 Java中可以使用 System的方法 arraycopy()实现数组复制功能。方法 arraycopy() 语法格式如下:
System.arraycopy(arrayA,0,arrayB,0,a.length);
- arrayA:来源数组名称
- 0:来源数组的起始位置
- arrayB:目的数组名称
- 0:目的数组名称
- a.length:要从来源数组复制的元素个数
4.2.比较数组
比较数组就是检查两个数组是否相等。如果相等,则返回布尔值 true;如果不相等,则返回布尔值 false。在Java中可以使用方法 equals()比较数组是否相等,具体格式如下所示:
Arrays.equals(arrayA,arrayB);
- arrayA:待比较数组的名称
- arrayB:待比较数组的名称
如果两个数组相等,就会返回true;如果不相等,则返回false
在比较数组的时候,一定要在程序的前面加一句 “import java.util.Arrays”,否则程序会自动报错。
4.3.排序数组
排序数组是指对数组内的元素进行排序,在 Java 中可以使用方法 sort() 实现排序功能,并且排序规则是默认的。
Arrays.sort(a);
参数a是待排序数组的名称。
import java.util.Arrays;
public class shuzugong6{
public static void main(String[] args){
String[] a = new String[]{"123","XYZ","ABCD","256"};
//初始化数组a的元素,其中既有数字,也有字母
Arrays.sort(a); //对数组a中的元素进行排序
System.out.println(Arrays.asList(a));// 输出排序后的结果
}
}
/*
最终输出结果为 [123,256,ABCD,XYZ]
*/
上述代码中用到了方法 Arrays.asList(),此方法返回由指定数组支持的固定大小的列表,充当基于数组的集合和基于 API 之间的桥梁。
4.4.搜索数组中的元素
在 Java中可以使用方法 binarySearch()搜索数组中的某个元素,语法格式如下所示。
int i=binarySearch(a,"abcde");// i得到的是索引位置
- a:要搜索的数组的名称
- abcde:需要在数组中查找的内容
4.5.填充数组
在 Java 程序设计里,可以使用 fill()方法向数组中填充元素。fill()方法的功能十分有限,只能使用同一个数值进行填充。使用fill()方法的语法格式如下:
int a[]=new int[10];
Arrays.fill(a,11);
其中,参数 a 是指将要填充的数组的名称,上述格式的含义将数值11 填充到数组a中。a中所有的元素值都为11。
4.6.遍历数组
在 Java语言中,foreach 语句是从 Java 1.5 开始出现的新特性之一,在遍历数组和遍历集合方面,foreach为我们提供了极大的方便。从实质上说,foreach 语句是 for语句的特殊简化版本,虽然 foreach语句并不能完全取代 for 语句,但是任何 foreach 语句都可以改写为 for 语句版本。
foreach 并不是一个关键字,习惯上将这种特殊的 for 语句称为“foreach”语句。从英文字面意思理解,foreach 就是“为每一个”的意思。foreach 语句的语法格式如下所示:
for(type 变量x : 遍历对象obj){
引用了x的Java语句;
}
其中,“type”是数组元素或集合元素的类型,“变量x”是一个形参,foreach 循环自动将数组元素,集合元素依次赋给变量x。
使用foreach 循环和普通循环的不同之处是,不需要循环条件,也不需要循环迭代语句,这些部分都由系统完成,foreach 循环自动迭代数组的每个元素,当每个元素都被迭代一次后,foreach循环自动结束。