数组的概念
相同数据类型按一定顺序排列的集合,并使用一个名字命名,且通过编号的方式对这些数据进行统一管理。
数组的特点
数组属于引用数据类型的的变量。数组的元素即可以是基本数据类型,也可以是引用数据类型
创建数组对象会在内存中开辟一整块连续的空间
数组的长度一旦确定,就不能修改
分类
按照维数:一维数组,二维数组等等
按照定义分为静态和动态
静态:int[] ids = new int[]{10,11,12,13,14};
动态:String[] names = new String[5];
names[0] = asd;...
区别:静态数组的初始化和数组元素的赋值操作同时进行,而动态数组的初始化和数组元素的赋值操作分开进行
数组索引要注意数组角标越界;
数组元素的默认初始化值
数组元素是整型:0
数组元素是浮点型:0.0
数组是char型:0或\u0000
数组是boolean型:false
数组遍历:(数据一个一个的访问,主要用于搜索、数据统计等)
int[] x = {0,1,2,3,4}
for(int i = 0; i < x.length; i++){
System.out.println(x.[i])
}
数组的内存解析
栈(stack):存放的是局部变量(方法里面的都是局部变量,如main方法,也就是栈空间,存放的都是地址值,并指向堆)
堆(heap):存放的是new出来的结构:对象,数组
方法区{常量池,静态域}:字节码文件加载
多维数组
比如常用的二维数组
将一维数组看作成是另一个一维数组的元素
类似于表格
静态初始化
int[][] arr1 = new int [][]{{1,2,3},{2,3,4},{5,4,2}};
动态初始化1
String[][] arr2 = new String[3][2];//[3]:三个数组;[2]:三个数组里,每个数组有二个元素(数组);
动态初始化2
String[][] arr3 = new String[3][];//未划分元素
遍历二维数组
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[i].length; j++) {
System.out.print(arr1[i][j]+" ");
}
System.out.println();
}
另外,数组中常用的算法有:线性查找,二分法,冒泡排序,等等等等,面试题常考。