1.什么是数组
数组是一种常用的数据结构,可以存储多个数据,通常用数据下标来定位数据,修改数据,取出数据,数组要求同个数组数据类型要相同。
数组的定义:
推荐使用 int [ ] arr; 不推荐使用 int arr [ ]; 这来个表达书只是定义了一个叫arr数组,因为数组是引用类型,这个时候只是定义了一个引用变量而已,还没有具体指向那一块内存,这时候数组还不能使用。
数组的初始化:
静态初始化:静态初始化就是在定义数组的时候直接给它赋值
int [] arr = new int[]{1,2,3,4,5};
for (int i : arr) {
System.out.println(i);
}
静态初始化简写方式:
int [] arr = {1,2,3,4,5};
数组下标是从0开始
动态初始化
动态初始化是定义好数组后,对其进行初始化并分配初始化空间,但不对其赋值。
int[] arr = new int[5];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
初始化数组之后数组长度不可以改变
增强for循环的介绍
int [] arr = new int[]{1,2,3,4,5};
for (int i : arr) {
System.out.println(i);
}
增强for循环是Java5之后增加的,上面的for循环是把arr内的元素拿出来赋值给i,我们就可以拿出来使用,增强for循环只可以遍历,不可以对数组赋值。
int[] arr = {1, 2, 3, 4, 5};
for (int i = 0; i < arr.length; i++) {
arr[i] = arr[i] + 1;
}
//普通for循环值改变了
for (int i : arr) {
i = i + 1;
}
for (int i : arr) {
System.out.println(i);
}//arr数组内的值并没改变
增强for循环上面的i是系统给的临时变量只是接收了数组的参数,并不会对原始数组的内容做出改变。
2.深入了解数组
数组是一种引用类型,变量只是一个引用,元素和变量在内存中是分开放的。
如果没有栈内存指向堆内存的时候,我们永远无法访问到数组对象,java垃圾回收器会自动把这些数据回收掉,对于引用数据类型其实都是这样的。
如何切断栈内存指向堆内存中的引用:
arr = null;
只要我们把其设置为null就行了,null什么意思,null的意思是一个空的对象。所有的引用类行对象都可以用null赋值,但是基础数据类型不可以。
3,多维数组
多维数组其实就是数组元素指向数组内存的地址
声明一个二维数组
String [][] str = { {"小张","小李"},{"小青","小郑"} };
增强for循环的简历
for (int i = 0; i < str.length; i++) {
for (int j = 0; j < str[i].length; j++) {
System.out.println(str[i][j]);
}
}
//增强fot循环遍历
for (String[] strings : str) {
for (String string : strings) {
System.out.println(string);
}
}