第一节 数组的定义与使用
本小节讲解数组的声明与数组的赋值和数组的使用。
数组的定义
之前我们声明的变量或常量都只能存储一个数据,想要存储两个或以上数据时,就必须声明两个或以上的变量或常量来保存响应的数据。是否有一种数据类型,可以一下存储多个数据比如说10个或20个,而只需声明一次呢?答案是有的,本小节所介绍的数组就是这样一种数据类型,它像一个容器一样,可以保存n多个数据到自己里面,但是这些数据必须是相同类型的。比如所有的必须都是int型的,或者所有的必须都是char型的。所以它也有一个自己的数据类型,同时保存了多少个数据叫做长度。比如一个char类型的数组,保存了3个char变量,那么它的长度就是3.
数组的声明
和前面的变量一样,想要使用数组,必须先定义它,即声明一个数组变量。数组变量和普通变量的声明很类似,只需在以前普通变量声明的基础上增加[]即可,它可以写在变量名称的前面,也可以写在变量名称的后面。如:
char [] codes; //一个char类型的数组
int numbers [];//一个数值类型的数组
数组的初始化
如上便声明了一个数组,但是这样的数组不能坐任何操作,因为它目前什么都不是,只是空有这么一个概念,就好比我说我想有一辆车,并给车起好了名字,但是现在,我并没有一辆车,所以我的车只是一个概念,对它任何操作都做不了,因为根本不存在。上面声明的这两个数组也一样,他们目前只有名字,我们试用System.out.println(codes);或System.out.println(numbers);打印。编译代码时系统就会报错说,codes(或numbers)没有初始化。如何初始化呢,我们可以试用一个关键字new,它表示创造一个数组。具体如下:
char [] codes = new char[5];//表示我们创建了一个可以装5个char类型数据的char数组。
此时的数组就有了,只是,它目前是一个空数组,可以容纳5个char但是目前,里面是0个。我们可以再试着使用打印语句试试,这时编译不出错了。但是什么都没有打印,这时正常的,因为里面确实没有东西嘛,如果打印出点什么才不正常呢。
public class HelloJava {
public static void main(String[] args) {
char[] codes = new char[5];
System.out.println(codes);
}
}
//结果,只打印了一个空行
数组读写
有了数组就相当于,我们买了一辆车回来了,而且还可以坐5个人呢。那我们想知道车里做的都有谁,或者,让车里坐两个人吧,让张三从副驾坐下来,让李四坐上去。这些便是相当于对数组的读写操作了。比如我们想给数组里面放点东西,把放进去的东西取出来。数组是挨个排在一起的一串内存,所以我们可以看作数组就像一排萝卜坑一样,可以给它编号,1号坑,2号坑,3号坑,4号坑,5号坑。不过在计算机中,第1个不叫第2个,叫第0个,所以这个容纳5个char的数组相当于是5个放char变量的坑。我们可以像操作普通变量一样的操作每一个坑。切记从第0个开始,只有0-4号这么5个坑位,没有第五个坑位。
codes[0] = 'H';//给0号坑放入字符H
codes[1] = 'e';
codes[2] = 'l';
codes[3] = 'l';
codes[4] = 'o';
以上便给每一个坑位写入一个数据,想要修改,只需再写一次覆盖原来的数据即可。此时再打印时,会发现打印有结果了
public class HelloJava {
public static void main(String[] args) {
char[] codes = new char[5];
codes[0] = 'H';//给0号坑放入字符H
codes[1] = 'e';
codes[2] = 'l';
codes[3] = 'l';
codes[4] = 'o';
System.out.println(codes);
}
}
//结果
Hello
我们也可以按照下标逐个访问:
public class HelloJava {
public static void main(String[] args) {
char[] codes = new char[5];
codes[0] = 'H';//给0号坑放入字符H
codes[1] = 'e';
codes[2] = 'l';
codes[3] = 'l';
codes[4] = 'o';
System.out.println(codes)
System.out.println("--------------------*********我是华丽丽的分割线*********------------------");
System.out.println(codes[0]);
System.out.println(codes[1]);
System.out.println(codes[2]);
System.out.println(codes[3]);
System.out.println(codes[4]);
System.out.println("--------------------*********我是华丽丽的分割线*********------------------");
for(int i = 0; i < codes.length; i ++) {//使用for循环的方式访问,codes.length就是访问这个数组的长度。它刚好是5.
System.out.println(codes[i]);
}
}
}
//结果
Hello
--------------------*********我是华丽丽的分割线*********------------------
H
e
l
l
o
--------------------*********我是华丽丽的分割线*********------------------
H
e
l
l
o
循环和数组的配合是一种很好的访问数组的方式。当然数组还有很多初始化方式。如下也可以初始化数组,并给予初值。结果和上面的效果是一样的。
public class HelloJava {
public static void main(String[] args) {
char[] codes = {'H', 'e', 'l', 'l', 'o'};
System.out.println(codes)
System.out.println("--------------------*********我是华丽丽的分割线*********------------------");
System.out.println(codes[0]);
System.out.println(codes[1]);
System.out.println(codes[2]);
System.out.println(codes[3]);
System.out.println(codes[4]);
System.out.println("--------------------*********我是华丽丽的分割线*********------------------");
for(int i = 0; i < codes.length; i ++) {//使用for循环的方式访问,codes.length就是访问这个数组的长度。它刚好是5.
System.out.println(codes[i]);
}
}
}
//结果
Hello
--------------------*********我是华丽丽的分割线*********------------------
H
e
l
l
o
--------------------*********我是华丽丽的分割线*********------------------
H
e
l
l
o
~完~