本章学习要点:
1. 了解数组的基本概念;
2. 掌握数组使用方法;
一、数组的基本概念
1. 数组定义:
同一数据类型数据的集合,在Java中它也是一种数据类型;数组按维数可分为一维数组,二维数组等多维数组,维数越多,使用越复杂所以在实现运用中一最多使用二维;
2. 数组存储
数据按顺序存储,数组中的每一个数据可以下标来访问,下标以0开始至n-1结束;
注:Java中的二维数组中第二维是可以不等长的,这有别的C/C++语言;
二、数组使用方法
1. 一维数组 -- 只有一维的数组
a. 创建
type[] array = new type[array length]; 或 type array[] = new type[第一维长度];
如: int[] intArray = new int[10]; // 创建了一个长度为10,类型为int的数组
string[] strArray = new string[2]; // 创建了一个长度为2,类型为string的数组
b. 访问
array[index] // 下标从0 …. n - 1
如:
// setter 修改数组值
intArray[0] = 100;
strArray[0] = "Hello World!"
// getter 获取数组值
int intValue = intArray[0];
string strValue = strArray[0];
通常使用循环访问数组中成员变量如:
for (int ii = 0; ii < intArray.length; ii++) {
intArray[ii] = ii;
}
2. 多维数组 -- 一维以上的数组
以二维数组为例
a. 创建
type[][] array = new type[第一维长度][第二维长度]; 或 type array[][] = new type[第一维长度][第二维长度];
如:
定长数组
int[][] intArray = new int[10][10]; // 创建一个10x10整型数组
第二维不定长数组
int[][] intArray = new int[10][]; // 第二维不定长
for (int ii = 0; ii < intArray.length; ii++) {
intArray[ii] = new int[ii+ 1];
}
b. 访问
array[第一维下标][第二维下标]
for (int ii = 0; ii < intArray.length; ii++) {
for (int jj = 0; jj <intArray[ii].length; jj++) {
intArray[ii][jj] = jj + 100;
}
}
三、代码演示
杨飞三角形实现: (不定长二维数组)
int[][] yangHei(int count) {
int [][] data = new int [count][];
for (int ii = 0; ii < count; ii++) {
data[ii] = new int[ii+1];
data[ii][0]= 1;
data[ii][ii]= 1;
}
for (int ii = 1; ii < count; ii++) {
for (int jj = 0; jj < ii; jj++) {
if (jj > 0 && jj < ii) {
data[ii][jj] = data[ii - 1][jj - 1] + data[ii - 1][jj];
}
}
}
return data;
}
10x10数组赋值与输出(定长二维数组)
int[][] data = new int[10][10];
for (int ii = 0; ii < data.length; ii++) {
for (int jj = 0; jj < 10; jj++) {
data[ii][jj] = jj;
}
}
for (int ii = 0; ii < data.length; ii++) {
for (int jj = 0; jj < 10; jj++) {
System.out.print(data[ii][jj] + " ");
}
System.out.println();
}