物以类聚的变量集——数组
数组的缘由:在程序编程中,我们常常有许多个相同类型的变量,如果一个个单独定义的话,不仅增加了编程的工作量,也使程序的可读性下降,还占用了较多的内存空间,为此,采用数组的方式,把相同类型的数据集合在一起。数组按照维度的不同,主要划分为一维数组、二维数组和多维数组。
- 一维数组的声明
java是一种强类型语言,任何变量在使用之前必须先定义和初始化,所以数组也遵循先声明与初始化再使用的规则。数组的定义一个是数组名,另一个是数组长度,数组长度确定后是不可改变的哦。
格式1:
数据类型[] 数组名 =null; 数组名 = new 数据类型[数组长度];
格式2:
数据类型[] 数组名 = new 数据类型[数组长度];
注意点:以上的 “数据类型[] 数组名 ”可以写成“ 数据类型 数组名[]”; 在jdk1.5以后,“数据类型[] 数组名 =null;” 可以写成 “数据类型[] 数组名;”
- 一维数组的初始化
初始化是对数组进行赋值,分为静态初始化和动态初始化。
静态的初始化就是在给数组声明的同时就给数组分配内存空间(用new关键词)和赋值。
格式1:
数据类型[] 数组名 = {元素值1,元素值2,元素值3,.....元素值n};
格式2:
数据类型[] 数组名 = new 数据类型[] {元素值1,元素值2,元素值3,.....元素值n};
动态的初始化就是先指定数组的长度,由系统为这些元素赋值,每个元素的值都是取数据类型相对应的默认值,(数据类型包括基本数据类型和引用数据类型(接口、类和数组))之后再对数组的每个元素进行赋值。
注意点:不可同时用动态初始化和静态初始化,即指定数组的长度的同时还为每一个元素赋值。
- 访问数组元素
使用数组最常见的方式是对数组的元素进行访问,而不是对数组变量进行操作,其格式如下: 数组名[下标元素]。
注意点:如果你直接输出的数组名(不带下标元素),那么输出的将是数组的地址。
例如:输出一个数组名的结果为[java.lang.String;@4e77b794,它的含义如下:
[:表示数组为一维数组;[[表示数组是二维数组;
java.lang.String;表示数组的类型是String ;
@4e77b794表示数组存放地址。
- 获取数组的长度
在对数组进行遍历之前,我们首先需要知道数组的长度,java语言提供了length属性,格式是数组名.length。
- foreach遍历语句
从JDK1.5开始,java提供了一种foreach语句,主要用来遍历数组和集合。与for循环不同的是,foreach语句不需要知道数组的长度。注意的是,foreach语句的作用就是遍历,不能用来循环改变数组元素的值。
格式:
for(数据类型 变量名:数组名){};
----------------------------------------------------------
二维数组是一个特殊的一维数组,只不过这个数组的元素是一个一维数组,而且每个元素的一维数组长度是不定的。类似于一个大家族(二维数组)里面有多个小家族(一维数组),每个小家族的元素个数(人数)是不一定相同的。
- 二维数组的声明(常用的是格式3)
格式1:
数据类型[] 数组名[] ;
格式2:
数据类型[] [] 数组名;
格式3:
数据类型 数组名[][];
- 二维数组的初始化
二维数组的初始化也分为静态初始化和动态初始化。
静态初始化格式:
数据类型 数组名[][] = {{第0行元素值},{第一行元素值}......{第n行元素值}};
数据类型 数组名[][] = new 数据类型[][]{{第0行元素值},{第一行元素值}......{第n行元素值}};
动态初始化格式:
数据类型 数组名[][] = new 数据类型[行数][列数];
数组名 = new 数据类型[][] {{第0行元素值},{第一行元素值}......{第n行元素值}};
注意点:二维数组的列数以包含元素最多的行元素个数作为列数。
- 二维数组的行数和列数获取
上面讲了一维数组的数组长度的获取方式是利用length属性,二维数组同样拥有这个属性,利用length属性得到的是二维数组里面{}的个数,也就是二维数组的行数。那么获取二维数组的列数怎么办呢?尤其在遍历二维数组时,它一个双循环,需要数组的行数和数组的列数。我们讲到过,二维数组是一个特殊的一维数组,里面的每一个行都是一个一维数组,再获取一次length属性就可以得到每一行的列数。
格式:数组名[第n行].length

浙公网安备 33010602011771号