数组介绍
- 数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。
- 数组会在堆中创建
数组的定义
int[] arr = new int[n];//n为具体数字
int[] arr = {1,2,3}
使用细节和注意事项
- 数组是多个相同类型数据的组合,实现对这些数据的统一管理
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
- 数组创建后,如果没有赋值,有默认值
int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,boolean false,String null - 使用数组的步骤 1. 声明数组并开辟空间 2 给数组各个元素赋值 3 使用数组
- 数组的下标是从 0 开始的。
- 数组下标必须在指定范围内使用,否则报:下标越界异常,比如
int [] arr=new int[5]; 则有效下标为 0-4 - 数组属引用类型,数组型数据是对象(object
数组赋值机制
- 基本数据类型赋值,这个值就是具体的数据,而且相互不影响。
int n1 = 2; int n2 = n1; - 数组在默认情况下是引用传递,赋的值是地址。
看一个案例,并分析数组赋值的内存图(重点, 难点. )。
//代码 ArrayAssign.java
int[] arr1 = {1,2,3};
int[] arr2
- 在main主栈中创建arr数组对象
- 然后在堆中开辟空间,将地址赋给arr
- 如果是基本数据类型在堆中进行数组的初始化
- 否则又是引用,在常量池中初始化
数组添加/扩容
- 新建数组将长度增加
- 然后将之前数组的值赋给现在的新数组
二维数组
- 语法: 类型[][] 数组名=new 类型[大小][大小]
- 比如: int a[][]=new int[2][3]
即为2个一维数组
存在形式
- 堆中开辟一个二维数组的空间
- 初始创建二维数组的第一个值代表行数,此时就有arr[0],arr[1]
- 初始创建二维数组的第二个值代表列数,即每个一维数组的大小
二维数组的初始化
int[][] arr = new int[2][3];
int[][]arr = { {1,2,3,}, {2,4,5},{3,5,6}}
int[][]arr = new int[][] { {1,2,3,}, {2,4,5},{3,5,6}}
二维数组的使用细节
- 一维数组的声明方式有:
int[] x 或者 int x[] - 二维数组的声明方式有:
int[][] y 或者 int[] y[] 或者 int - 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如: map[][] 是一个二维数组
int map [][] = {{1,2},{3,4,5}}
由 map[0] 是一个含有两个元素的一维数组 ,map[1] 是一个含有三个元素的一维数组构成,我们也称为列数不等的二维数组
练习