数组
01什么是数组
数组是相同类型数据的有序集合
按照一定的先后次序排列组合而成
每个数组元素可以通过下标来访问他们,从0开始
数组的长度是固定的,不可变
数组的声明和创建
数组的声明//栈
int[] num;//首选
int num[];//c
数组的创建//堆,并且和上面栈对应
num= new int[10];
数组的赋值(不赋值就返回默认值)
num[0]= 1;
....
以此类推
数组的长度 num.length
03三种初始化及内存分析
java内存:
1.堆:存放new的对象和数组,可以被所有线程共享,不会存放别的对象引用
2.栈:存放基本变量类型(包含其的具体数值),引用对象的变量(会存放这个引用在堆里的具体地址)
3.方法区:可以被所有线程共享,包含了所有的class和static变量
三种初始化:
1.静态初始化
int[] a={1,2,3,4,5};//创建加赋值
2.动态初始化
int[] a=new int[10];//创建,初始化都为0
逐个赋值
3.默认初始化
数组是引用类型,他的元素相当于类的实例变量
分配空间后,没有被初始化的空间都是默认值
04下标越界及小结
数组的基本特点
1.长度是确定的
2.元素相同类型
3.元素可以是任何类型(基本类型和引用类型)
4.数组变量是引用类型,数组本身是对象,数组本身在堆中。
数组下标越界异常java.lang.ArrayIndexOutOfBounds
05数组的使用
1.增强的for循环适合打印输出(取不到下标)
for(int array:arrays){
}
2.数组可以作为传参,也可以作为返回值
06多维数组
int[][] a={{1,2},{3,4}};//创建加赋值
没啥好说的啊吧啊吧
07Arrays类
import java.util.Arrays;
Arrays.tostring(a);//打印数组
Arrays.sort(a); //数组排序,是升序
Arrays.fill(); //填充数组
Arrays.fill(arr,4);//给所有值赋值4
Arrays.fill(arr, 2,4,6);//给第2位(0开始)到第4位(不包括)赋值6
Arrays.equals(); //比较数组元素是否相等
08冒泡排序
从头开始相邻元素两两比较,大小相反就互换
没啥好说的,双层循环就行
09稀疏数组
有很多数组很多空间没有被使用,可以使用稀疏数组来压缩
(时间换空间)
1.记录数组有几行几列几个不同的值,放在0
2.把不同数组的行列值放在一个小规模的数组中