1、数组概要

数组是一种引用数据类型,在内存中存储示意图如下:
1646929766(1).png

1646929788(1).png

  1. 数组是一组数据的集合
  2. 数组作为一种引用类型
  3. 数组元素的类型可以是基本类型,也可以是引用类型,但同一个数组只能是同一种类型
  4. 数组作为对象,数组中的元素作为对象的属性,除此之外数组还包括一个成员属性length,length表示数组的长度
  5. 数组的长度在数组对象创建后就确定了,就无法再修改了
  6. 数组元素是有下标的,下标从0开始,也就是第一个元素的下标为0,依次类推最后一个元素的下标为n-1,我们可以通过数组的下标来访问数组的元素

注意:
1、数组属性
2、数组下标
3、数组越界
4、内存分析
5、空指针
6、数组地址值:debug Object的toString方法
7、数组元素存放空间根据类型判断
8、数组的默认值

2、一维数组的声明和使用

2.1、数组的声明

一维数组的声明格式有以下2种:开发中常用的是前面的一种

  1. 数据类型[] 数组名称
  2. 数据类型 数组名称[]

2.2、数组的创建

  1. 数组声明格式,[]可以放在数据类型后面,也可以放在数组名称后面,一般都是放在数据类型后面
  2. 1、数据类型[] 数组名 = {数值,数值...}; 数值和前面的数据类型要一致
  3. 2、数据类型[] 数组名 = new 数据类型[]{数值,数值...};数值和前面的数据类型要一致
  4. 3、数据类型[] 数组名 = new 数据类型[3];

第一种

  1. String[] arr = {"苹果手机","华为手机","小米手机"};
  2. ===============================================
  3. 下面的方式不允许
  4. String[] arr = null;
  5. arr = {"苹果手机","华为手机","小米手机"};

第二种:不推荐使用,和第一种一样

  1. int[] nums = new int[]{10,10,20};

第三种

  1. double[] scores = new double[3];
  2. scores[0] = 100D;
  3. scores[1] = 200D;
  4. scores[2] = 300D;

3、二维数组的声明和使用

1 2 3
4 5 6

二维数组属于多维数组,那么什么是多维数组呢,当数组元素的类型是数组时就成了多维数组,二维数组的声明格式如下:

  1. 数组元素的数据类型[][] 变量名;
  2. 数组元素的数据类型 变量名[][];

其中方括号的个数就是数组的维数,声明二维数组如下:
int [][] data;
在这里介绍三种二维数组的创建方式
采用new关键字直接创建
1646930163(1).png

  1. public class ArrayTest05 {
  2. public static void main(String[] args) {
  3. //声明二维数组
  4. int[][] data = new int[2][3];
  5. //对二维数组赋值
  6. data[0][0] = 1;
  7. data[0][1] = 2;
  8. data[0][2] = 3;
  9. data[1][0] = 4;
  10. data[1][1] = 5;
  11. data[1][2] = 6;
  12. //输出二维数组
  13. for (int i=0; i<data.length; i++) {
  14. for (int j=0; j<data[i].length; j++) {
  15. System.out.println(data[i][j]);
  16. }
  17. }
  18. }
  19. }
  1. int[][] data = new int[2][3];

1646930195(1).png

  1. //对二维数组赋值
  2. data[0][0] = 1;
  3. data[0][1] = 2;
  4. data[0][2] = 3;
  5. data[1][0] = 4;
  6. data[1][1] = 5;
  7. data[1][2] = 6;

1646930228(1).png

从高维开始逐维创建

  1. public class ArrayTest06 {
  2. public static void main(String[] args) {
  3. //从高维开始逐维创建
  4. int[][] data = new int[2][];
  5. data[0] = new int[2];
  6. data[1] = new int[4];
  7. data[0][0] = 1;
  8. data[0][1] = 2;
  9. data[1][0] = 1;
  10. data[1][1] = 2;
  11. data[1][2] = 3;
  12. data[1][3] = 4;
  13. //输出二维数组
  14. for (int i=0; i<data.length; i++) {
  15. for (int j=0; j<data[i].length; j++) {
  16. System.out.println(data[i][j]);
  17. }
  18. }
  19. }
  20. }

采用初始化语句块创建数组对象

  1. public class ArrayTest07 {
  2. public static void main(String[] args) {
  3. //静态初始化
  4. // 多个数组之间用逗号隔开
  5. int[][] data = {{1,2},{1,2,3,4}};
  6. for (int i=0; i<data.length; i++) {
  7. for (int j=0; j<data[i].length; j++) {
  8. System.out.println(data[i][j]);
  9. }
  10. }
  11. }
  12. }