数组的概念
- Java中的数组是一个复合数据类型
- 数组中的元素具有相同的类型
- 元素类型可以是基本数据类型,类的对象,也可以是数组类型
- 数组元素是有序排列的,使用下标来访问
- 数组必须经过声明,构造,赋初值三个步骤以后才能使用(定义—内存分配—赋值)e
一、一维数组
- 声明一个一维数组
格式: 1) 数据类型[] 数组名称; (推荐使用)
2) 数据类型 数组名称[];
int[] a;
注意: 在[] 中什么也不可以有
声明一个数组并没有为数组元素分配内存,因此还不能使用它们。eg. a[0] 是错误的
- 一维数组的创建
声明数组后,通过使用运算符new为数组分配内存空间,之后数组才能存储数据。
格式: 数组名称=new 元素数据类型[元素个数];
a=new int[10];
- 一维数组声明并创建
int[] a = new int[10];
声明数组a, 包含10个元素 赋值符“=“此处实现让a指向这数组a10个连续空间。
10个内存空间,每个空间可存放一个整型数据
注意:
1)一维数组在声明的时候,[]里面是什么都不能有的,
2)但是在使用new运算符进行创建的时候,必须指明数组的长度,只有这样系统才能知道应该给这个数组分配多少内存。
3)与C语言不同,Java允许在创建数组时使用整型变量来指定数组元素的个数。这给数组的使用带来了很大的灵活性。
二、二维数组
- 声明一个二维数组
声明一个二维数组的格式:
1)元素数据类型[][] 数组名称;
2)元素数据类型[] 数组名称[];(推荐使用)
3)元素数据类型 数组名称[][];
注意:
声明二维数组要使用两个[],且什么都不能有。
int[][] Array2;
String[] s2[]; // 推荐使用
int[][] a;
- 二维数组的创建
创建格式:
数组名称=new 元素数据类型[N][ ];
数组名称=new 元素数据类型[N][M];
Array2=new int[3][ ];
s2=new String[2][3];
- 二维数组声明同时创建:
数据类型[][] 数组名称=new 数据类型[N][];
数据类型数组名称[][]=new 数据类型[N][M];
int[ ][ ] a = new int[3][5]; //规则二维数组
a 存放整个数组的首地址,行空间的首地址。
a[0] a[1] a[2] = null 分别存放每一行首地址。
注意
如果在创建二维数组时,只构造了第一维,那么在数组实际使用前还需将第二维创建完成,否则不能使用。——不规则数组
int[ ][ ] b = new int[3][ ];
int b[0] = new int[2];
int b[1] = new int[4];
int b[2] = new int[1];
三、特殊(元素类型为类的对象)
1) 定义一个学生类
class Student{
String name;
double score;
}
2) 易错点
Student[] stu = new Student[50];
stu[0].name = "张三"; //错误
系统自动会给基本数据类型开辟空间,而类类型不会。
这里开辟了50个引用空间给对象元素,但对象要先分配其引用空间,然后再创建实体空间。
此时的 stu[0] ~~~ stu[49] = null;
需要通过 stu[i] = new Student(); 分配其实体空间 后才可以赋值。
改正后 :
Student[] stu = new Student[50];
stu[0] = new Student();
stu[0].name = "张三";