数组
1.数组基础概念
1.1为什么要引入数组
首先我们引入一个例子:当我们需要输出5个学生的成绩Score(假设为10,20,30,40,50)时,我们首先想到的是使用sout的方式直接输出对应的五个数据。即
System.out.println(10);
System.out.println(20);
System.out.println(30);
System.out.println(40);
System.out.println(50);
那么首先我们可以发现,Score中的数据类型都是相同的。在只有五个数据的时候我们使用sout的方式可以很快的输出,那么当数据量为成百上千的时候呢?
因此,我们引入了数组。我们可以在数组中存储相同类型的多个数据。
1.2数组的概念
数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。

在内存中,由于数组的排列是连续的。因此我将他转化为上图的排列方式。而数组的每个数据都有自己的一个存储空间。为了获取对应空间中的数据,我们就需要进入到对应内存地址,最终获取到这段内存中的数据。
在Java中,底层代码已经为我们解决了这件事情,同时Java为数组中的每个数据进行了以0开始计数的编号,这个编号也是数组的下标。
1.3 数组的创建及初始化
1.3.1数组的创建
数组的基础创建公式为
T[] array = new T[N]; // T:数组中存放的数据类型,array为数组名,N为数据个数(数组长度)。
//举例
int[] array2 = new int[10];//在数组array中存放数据类型为int,数组长度为10
1.3.2 数组的初始化
数组的初始化主要分为静态初始化和动态初始化。
动态初始化:在创建数组的时候直接指定数组中元素个数。
int[] array = new int[10];
静态初始化:在创建数组的时候不直接指定数组数据个数,而直接将数据内容固定。
int[] array1 = new int[]{
1,2,3,4};
【注意事项】
1.在静态初始化过程中,{1,2,3,4}表示为数组中的内容,我们在定义的过程中并没有明确表示数组的长度为4。但是不用担心,Java在编译过程中会为我们自己计算数组的元素个数。
2.在静态初始化中,因为直接存入数据的原因,需要注意的是存入的数据类型必须与[]前的数据类型一致。
3.静态初始化可以进行简写:
int[] array1 = {
0,1,2,3,4,5,6,7,8,9};
double[] array2 = {
1.0, 2.0, 3.0, 4.0, 5.0};
String[] array3 = {
"hell", "Java", "!!!"};
虽然在简写过程中省略了new T[],但是在编译器编译代码时还是会还原的。
4.静态和动态初始化可以分为两步,但是不可以省略格式。
int[] array4;
array4 = new int[4];
int[] array5;
array5 = new int[]{
1,2,3};
5.如果创建数组的过程中没有对数组进行初始化,数组中的元素存在默认值。
- 如果数组中存在的元素类型为基本元素类型,默认值为基类类型对应的默认值。
| 类型 | 默认值 |
|---|---|
| byte | 0 |
| int | 0 |
| short | 0 |
| long | 0 |
| float | 0.0f |
| double | 0.0 |
| boolean | false |
| char | /u0000 |
在基本类型默认值中,char类型是比较特殊的“0”值,在编译运行后可能打印不出来,为空。
- 当数组类型为引用类型时,默认值为null
String[] str = new String[5];
System.out.println(str[1]);//null

1.4数组的使用
1.4.1 数组的访问
在上文中我们知道,数组在内存中是一段连续的空间,Java通过数字对数组进行编号。空间的编号从0开始并逐渐递增,这个编号称为数组的下标,我们可以通过下标访问数组的任一元素。
int[]array = new int[]{
10

最低0.47元/天 解锁文章
1250

被折叠的 条评论
为什么被折叠?



