前言
当我们打印出3个同学的数学成绩的时候。我们可以这样做:
public class Test {
public static void main(String[] args) {
int score1 = 99;
int score2 = 80;
int score3 = 60;
System.out.println(score1);
System.out.println(score2);
System.out.println(score3);
}
}
输出效果:
我们发现少量的数据进行打印的时候是非常容易,那么如果有100个人的成绩或者200个同学的成绩需要打印呢?这时候一个一个去打印就非常的麻烦了,因此我们就有了一个概念就是本期所要学的数组。它可以将这些相同类型的数据存放在一个集合里面,这就是它的好处。
数组是相同类型元素的一个集合。在内存是连续存放的,类似于现实生活中的车库。
以上图片就是两个连续的存储方式,左侧就是我们的数组大概的模样。数组的几个注意事项:
在上面我们知道数组的用处,以及在内存大概的布局模样后,数组是如何创建的呢?
type[] 数组名 = new type[N];
type:表示数组中存放的各个元素的类型
type[]:表示数组的类型
N:表示数组的长度
创建三个数组:
int[] arry1 = new int[10];
double[] arry2 = new double[5];
String[] arry3 = new String[3];
int[] arry1 = new int[10];//定义一个名为arry1的数组,里面可以存放10个整型元素。
double[] arry2 = new double[5];//定义一个名为arry2的数组,里面可以存放5个双精度浮点型元素。
String[] arry3 = new String[3];//定义一个名为arry3的数组,里面可以存放3个字符串。
数组的初始化分为动态初始化以及静态初始化。
(1)动态初始化,我们直接规定数组元素的个数,如:
int[] arry= new int[10];
(2)静态初始化,在创建数组的时候不规定数组元素的个数,并直接将数组的内容进行设定,如:
int[] arry1 ={1,2,3,4,5};
double[] arry2 ={3.1,2.4,6.3};
String[] arry3 ={"abc","123","hello"};
注意:
当我们创建数组后并未对其进行初始化,数组中元素会自动设置默认值为0。如:
public class Test {
public static void main(String[] args) {
int[] arry = new int[10];
System.out.println(Arrays.toString(arry));
}
}
输出:
以上代码,我们发现创建一个整型数组后没有对其进行初始化,它的每个元素默认都为0。在上述代码中,我引用了一个方法Arrays.toString(数组名)意为:以字符串的形式输出该数组。那么数组中存储元素的类型为基本类型,其各个类型对应的默认值,如下表所示:
类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0f |
double | 0.0 |
char | /u0000 |
boolean | false |
大家可以下来自己测试一下,在此我就不一一测试了。注意,如果数组中存储元素类型为引用类型,其默认值为null,下面我会讲到。
在1.2中我们知道了,数组是从下标为0的下标依次往后执行的。并且数组可以通过下标访问到想访问到的数据。比如我想访问到一个数组的第5个数,我们可以通过下标为4的数组找到该元素。
请看以下代码:
public class Test {
public static void main(String[] args) {
int[] arry ={1,2,3,4,5};
System.out.println(arry[0]);
System.out.println(arry[4]);
arry[0] = 6;
System.out.println(arry[0]);
}
}
输出:
观察以上代码,我们不难发现。当我们想访问那个元素的时候,直接数