Java学习——数组
数组的关键元素
1.数组名
2.元素
3.角标、下标、索引
4.数组的长度和个数
【注】
1.数组的元素可以是任何数据类型
2.创建数组的对象会再内存中开辟一整块连续空间
3.数组的长度一旦确定,就不能修改
数组的分类:
1.按维数:一维 二维
2.按数组元素类型:基本数据类型 引用数据类型
一维数组的使用:
1.一维数组的声明和初始化
2.如何调用数组指定位置的元素
3.如何遍历数组
4.如何获取数组长度
5.数组元素的默认初始化值
6.数组的内存解析
一维数组的声明:
//1.1静态初始化 数组的初始化和数组元素的赋值操作同时进行
int[] ids = new int[]{1,2,3,4}
//1.2动态初始化 数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[5];
声明时,数据类型取决于数组元素的类型,数组一旦初始化完成,数组的长度就已经确定
调用一维数组的元素
names[0] = “xiaomu”
names[1] = “xiaomu2”
…
name[4] = “xiaomu3”
数组的角标从0开始,到length-1结束
获取数组的长度
属性 length
“数组名.length”
遍历数组
利用循环
一维数组元素的默认初始化值
1.数组元素是整型 初始化值0
2.数组元素是浮点型 初始化值0.0
3.数组元素是char型 初始化值‘0’ 在console中输出类似空格效果
4.数组元素是boolean 初始化值 false
一维数组的内存解析
1.new出来的变量都应该存储在堆里
2.将存储在堆空间的变量首地址值赋给栈中开辟的数组
二维数组
1.定义
可以看作一维数组的元素又是一个一维数组
2.数组的声明
2.1静态初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}}
int[][] arr1 = {{1,2,3},{4,5},{6,7,8}}
2.2动态初始化1
String[][] arr2 = new String[3][2]
2.2动态初始化2
String[][] arr3 = new String[3][]
3.用length属性获取二维数组的长度时输出的结果取决于外层数组的长度
二维数组默认初始化值
1.针对2.2动态初始化1,外层元素的初始化值为地址值,内层元素的初始化值与一维数组初始化情况相同。
2.针对2.2动态初始化2,外层元素的初始化值为null,内层元素的初始化值不能调用,否则报错。
数组的复制
1.要在内存中新开了一块存储地址才可以称作复制
2 arr2 = arr1 (这不能称作数组的复制,仅是对数组2赋值)
arr2 = new int [arr1.length];//开辟一块新的数组空间
for(i = 0;i < arr2.length; i++){
arr2[i] = arr1[i];
}
上述代码块的操作可以说是数组的复制
数组的查找
1.线性查找
从某个下标开始顺序查找,
2.二分法查找
数组的排序
1.冒泡排序
2.快排
3.推排序
4.归并排序
5.直接排序
数组中常见的异常:
1.ArrayIndexOutOfBoundsExcePtion:数组角标越界异常
2.NullPointerException:空指针异常