Day06
数组
与C语言类似
理解
- 数组属于引用数据类型的变量
- 数组的元素既可以是基本数据类型,也可以是引用数据类型
- **数组名是什么?**是指针!!!可以如此理解
- 可以用数组名进行数组的赋值么?
声明和初始化
// 静态初始化数组
int[] ia1;//此处声明了一个数组
ia1 = new int[]{1001,1002,1003,1004}; // 此处对数组ia1进行初始化;初始化和赋值是同时进行的
// 动态初始化数组
String[] stra1 = new String[5]; // 此处对数组stra1进行了初始化;初始化和赋值是分开进行的
// 注意,声明数组时,数组的类型只能是 Type[] ;不能是 Type[num] ;
// 即不能有以下写法
1. int[] ia1 = new int[];
2. int[5] ia2 = new int[5];
3. int[] ia3 = new int[5]{1,2,3,4,5}; // java:同时使用维表达式和初始化创建数组是非法的
调用特定位置的值
通过角标调用,java数组 索引值 从 0 到 数组长度 -1 。
获得数组的长度
可以直接访问数组属性length来获得数组长度
int[] ia1 = new int[5];
System.out.println(ia1.length);
遍历数组
- 循环遍历 从 0 到 length - 1
- 没有迭代器?
数组的默认初始化值
- 整型数组:0
- 浮点型数组:0.0
- char型数组:0 或者 ‘\u0000’ 而非‘0’
- boolean型数组:false
- 引用数据类型数组:null
数组的内存解析
另外值得注意的是,在java中数组名是可以重新赋值的,之前的空间会在重新赋值后的一个不确定的时间被 JVM 回收。
不确定的时间?你是在逗我?
二维数组
理解
- 数组的元素也可以是数组,本质上,并没有多维数组
声明和初始化
int[][] iaa1 = new int[][]{{}}
String[][] straa1 = new String[3][3];
// other way
int[] iaa2[] = new int[][]{{}};
int[] iaa3[] = {{}};
调用
同样采用角标(索引)
二维数组的长度
同样是数组名.length,是当前数组的长度(按数组的 理解来)
二维数组的默认初始化值
- 数组名类为地址值
- 元素类与一维数组一致