一、创建和使用数组
(一).1.什么是数组
(1)数组是相同类型数据的有序集合(其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们)
(2)Java语言的数组是一种引用数据类型,即数组是对象。数组继承Object类的所以方法。
2.数组定义
使用数组一般需要的三个步骤:
(1)声明数组.(2)创建数组.(3)数据的初始化.
注:声明数组就是告诉编译器数组名和数组元素类型,不能指定数组元素个数,数组声明可使用下面两种等价形式。
3.创建数组
(1)创建数组是为数组的每个元素分配储存空间。使用new语句,一般格式为:
(2)对数值型数组元素默认值为0;字符型元素的默认值为'\u0000';布尔型元素默认值为false;如果数组元素是引用类型,其默认值为null。
(3)引用类型数组(对象数组)还要为每个数组元素分配引用空间。
4.访问数组元素
声明数组并使用new运算符为数组元素分配内存空间后,就可以使用数组中的每一个元素。数组元素的使用方式是:
其中,index为数组元素下标或索引,下标从0开始,到数组的长度减1。
5.数组初始化器
(1)数组的两种常见初始化方式:
1)动态初始化(指定长度)
2)静态初始化(指定内容)
6.增强的for循环
(1)增强的for循环可以用来迭代数组和对象集合的每个元素。一般格式为:
其中type为数组或集合中的元素类型;expression必须是一个数组或集合对象。
7.数组元素的复制
(1)一种方法是将数组元素逐个复制到目标数组中。
还可以使用System类的arraycopy()方法。
注:使用arraycopy()方法可以将源数组的一部分元素复制到目标数组中。需要注意的是,如果目标数组不足以容纳源数组元素,会抛出异常。
8.数组参数与返回值
(1)数组可以作为方法的参数和返回值。
(2)一个方法也可以返回一个数组对象。例如,下面的方法返回参数组的元素反转后的一个数组。
9.可变参数方法
(1)具体做法是,在方法参数列表的最后一个参数的类型名之后,参数名之前使用省略号。
其中,参数values被声明为一个double型值到序列。程序定义了带可变参数的方法average(),它的功能是返回传递给该方法多个double型数的平均值。
(二)二维数组
1.二维数组定义
(1)二维数组的每一个元素是一个一维数组。
注:二维数组中的每个一维数组的长度是相同的;创建后二维数组中的一维数组个数和每个一维数组的长度不能改变。
2.二维数组的声明
二维数组有下面三种的声明方式:
(1)数据类型 [ ][ ] 数组名字
例如:
(2)数据类型 数组的名字 [ ][ ]
例如: int a [ ][ ] = {{1,2,3},{1,2,3},{1,2,3}};
(3)数据类型[ ]数组名字[ ]
例如:
注:在Java语言中两种声明方法没有任何区别,但是建议大家用第一种,避免混淆a的数据类型
3.创建二维数组
(1)二维数组创建的三种方式:
1)声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值
2)声明数组并分配内存,同时将其初始化
3) 与前一种方式相同,仅仅只是语法相对简略
(2)从另一个角度,数组创建可以分为动态和静态两种
1)动态创建数组(没有为元素赋值,可以结合for循环进行赋值)
2)静态创建数组,在创建的时候,即为每个元素赋初值
4.数组初始化器
(1)对于二维数组也可以使用初始化器在声明数组的同时为数组元素初始化。
5.不规则二维数组
(1)Java的二维数组是数组的数组,对二维数组声明时可以只指定第一维的大小,第二维的每个元素可以指定不同大小。
6.实例:矩阵乘法
使用二维数组可以计算两个矩阵的乘积。如果矩阵A乘以矩阵B得到矩阵C,则必满足如下要求:
(1)矩阵A的列数与矩阵B的行数相等。
(2)矩阵C的行数等于矩阵A的行数,列数等于矩阵B的列数。
例如,下面的例子说明两个矩阵是如何相乘的。
在结果矩阵中,第1行第1列的元素是9,它是通过下列计算得来的。
1 × 4+2× 2+ 1 × 1 =9
即若矩阵Aₘₙ×Bₙₗ=Cₘₗ,
则cij=∑k=1naik×bkj
其中,Aₘₙ表示m×n矩阵,cᵢⱼ是矩阵C的第i行j列元素。