数组
1.定义:数组是相同类型数据的集合,数组的内存存储空间是连续的。
2.数组的内存结构:
一维数组:
二维数组:
3.数组特点:
a) 数组的内存空间大小固定的,一但JVM为数组分配内存空间就不能再变大或变小。
b) 数组元素通过下标访问,下标从0开始,最后一个元素的下标为arr.length-1。
double[] score; //声明一个整型数组
score = new double[10];
//通过下标给数组元素赋值
score[0] = 77;
score[1] = 73;
score[2] = 72;
score[3] = 70;
score[4] = 87;
//通过下标访问数组元素
int element = score[4]; //87
注意:
能不能再重新创建score数组? 从编程的角度来说是可以的, 但是JVM会将原来分配存放10个double数的空间丢弃,从新分配一块存放20个double数的内存空间
score = new double[20];
4.数组下标问题
a) 最小下标为:0;最大下标: 数组标识符.length – 1。
b) 下标越界问题:
int[ ] score = new int[2];
score[0] = 89;
score[1] = 63;
//数组下标越界,在编译时无法发现,只有在运行时报错(运行时异常)
score[2] = 45; //error
System.out.println(score[2]);
一维数组
声明
数据类型 标识符 [ ];
数据类型 标识符[ ] = new 数据类型[大小];
数据类型 标识符 [ ] = {值 1,值 2,…值 N} ;
注意:数组是对象,属于引用类型;基本数据类型的数组也是对象。
int[ ] students = new int[30]; // ok
int[] numbers = {4,2,9}; //ok
int[] numbers = new int[]{4,2,9,4,5} ; // ok
int[] numbers = new int[5]{4,2,9,4,5}; // error, 不可再指定长度
二维数组
定义:
a)数组的每个元素又是一个一维数组,这样的数组称为二维数组。
b)语法:
// 方式1:声明时直接初始化
// 二维数组里的每一个元素是一个一维数
int[ ][ ] stuScores = { {11,12}, {21,22}, {31,32,33}, {41,42}};
//方式2:
数据类型[][] 数组名=new 数据类型[一维长度][二维长度]
int[ ][ ] stuScores = new int[2][3];
注意:
创建的时候,可同时设置一维长度和二维长度,也可只设置一维长度,但是不能只设置二维长度。