1、数组概要
数组是一种引用数据类型,在内存中存储示意图如下:
- 数组是一组数据的集合
- 数组作为一种引用类型
- 数组元素的类型可以是基本类型,也可以是引用类型,但同一个数组只能是同一种类型
- 数组作为对象,数组中的元素作为对象的属性,除此之外数组还包括一个成员属性length,length表示数组的长度
- 数组的长度在数组对象创建后就确定了,就无法再修改了
- 数组元素是有下标的,下标从0开始,也就是第一个元素的下标为0,依次类推最后一个元素的下标为n-1,我们可以通过数组的下标来访问数组的元素
注意:
1、数组属性
2、数组下标
3、数组越界
4、内存分析
5、空指针
6、数组地址值:debug Object的toString方法
7、数组元素存放空间根据类型判断
8、数组的默认值
2、一维数组的声明和使用
2.1、数组的声明
一维数组的声明格式有以下2种:开发中常用的是前面的一种
数据类型[] 数组名称
数据类型 数组名称[]
2.2、数组的创建
数组声明格式,[]可以放在数据类型后面,也可以放在数组名称后面,一般都是放在数据类型后面
1、数据类型[] 数组名 = {数值,数值...}; 数值和前面的数据类型要一致
2、数据类型[] 数组名 = new 数据类型[]{数值,数值...};数值和前面的数据类型要一致
3、数据类型[] 数组名 = new 数据类型[3];
第一种
String[] arr = {"苹果手机","华为手机","小米手机"};
===============================================
下面的方式不允许
String[] arr = null;
arr = {"苹果手机","华为手机","小米手机"};
第二种:不推荐使用,和第一种一样
int[] nums = new int[]{10,10,20};
第三种
double[] scores = new double[3];
scores[0] = 100D;
scores[1] = 200D;
scores[2] = 300D;
3、二维数组的声明和使用
1 | 2 | 3 |
---|---|---|
4 | 5 | 6 |
二维数组属于多维数组,那么什么是多维数组呢,当数组元素的类型是数组时就成了多维数组,二维数组的声明格式如下:
- 数组元素的数据类型[][] 变量名;
- 数组元素的数据类型 变量名[][];
其中方括号的个数就是数组的维数,声明二维数组如下:
int [][] data;
在这里介绍三种二维数组的创建方式
采用new关键字直接创建
public class ArrayTest05 {
public static void main(String[] args) {
//声明二维数组
int[][] data = new int[2][3];
//对二维数组赋值
data[0][0] = 1;
data[0][1] = 2;
data[0][2] = 3;
data[1][0] = 4;
data[1][1] = 5;
data[1][2] = 6;
//输出二维数组
for (int i=0; i<data.length; i++) {
for (int j=0; j<data[i].length; j++) {
System.out.println(data[i][j]);
}
}
}
}
int[][] data = new int[2][3];
//对二维数组赋值
data[0][0] = 1;
data[0][1] = 2;
data[0][2] = 3;
data[1][0] = 4;
data[1][1] = 5;
data[1][2] = 6;
从高维开始逐维创建
public class ArrayTest06 {
public static void main(String[] args) {
//从高维开始逐维创建
int[][] data = new int[2][];
data[0] = new int[2];
data[1] = new int[4];
data[0][0] = 1;
data[0][1] = 2;
data[1][0] = 1;
data[1][1] = 2;
data[1][2] = 3;
data[1][3] = 4;
//输出二维数组
for (int i=0; i<data.length; i++) {
for (int j=0; j<data[i].length; j++) {
System.out.println(data[i][j]);
}
}
}
}
采用初始化语句块创建数组对象
public class ArrayTest07 {
public static void main(String[] args) {
//静态初始化
// 多个数组之间用逗号隔开
int[][] data = {{1,2},{1,2,3,4}};
for (int i=0; i<data.length; i++) {
for (int j=0; j<data[i].length; j++) {
System.out.println(data[i][j]);
}
}
}
}